From: Thierry Lorthiois Date: Sat, 7 Mar 2009 10:05:15 +0000 (+0000) Subject: fixed some bugs X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=2e6b12080e5187b0e0db377cd4df22405119e5b8;p=chaz%2Ftint2 fixed some bugs --- diff --git a/ChangeLog b/ChangeLog index 05cce82..ecdfc58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-07 +- fixed segfault when time1_format empty +- fixed systray : when clock change size +- fixed systray segfault when xrandr change size + 2009-03-01 - fixed segfault on tray application due to tint2 diff --git a/src/clock/clock.c b/src/clock/clock.c index 4d42e9b..288ed94 100644 --- a/src/clock/clock.c +++ b/src/clock/clock.c @@ -177,6 +177,7 @@ void resize_clock (void *obj) for (i=0 ; i < nb_panel ; i++) { panel1[i].area.resize = 1; } + systray.area.resize = 1; panel_refresh = 1; } diff --git a/src/config.c b/src/config.c index abd0be5..272bdcf 100644 --- a/src/config.c +++ b/src/config.c @@ -309,9 +309,14 @@ void add_entry (char *key, char *value) /* Clock */ else if (strcmp (key, "time1_format") == 0) { if (time1_format) g_free(time1_format); - if (strlen(value) > 0) time1_format = strdup (value); - else time1_format = 0; - panel_config->clock.area.on_screen = 1; + if (strlen(value) > 0) { + time1_format = strdup (value); + panel_config->clock.area.on_screen = 1; + } + else { + time1_format = 0; + panel_config->clock.area.on_screen = 0; + } } else if (strcmp (key, "time2_format") == 0) { if (time2_format) g_free(time2_format); diff --git a/src/panel.c b/src/panel.c index 21a3001..adccfea 100644 --- a/src/panel.c +++ b/src/panel.c @@ -134,6 +134,7 @@ void cleanup_panel() { if (!panel1) return; + cleanup_systray(); cleanup_taskbar(); // font allocated once diff --git a/src/systray/systraybar.c b/src/systray/systraybar.c index 18c1f22..927f9cb 100644 --- a/src/systray/systraybar.c +++ b/src/systray/systraybar.c @@ -45,23 +45,14 @@ Systraybar systray; void init_systray() { - cleanup_systray(); - Panel *panel = &panel1[0]; systray.area.parent = panel; systray.area.panel = panel; systray.area._draw_foreground = draw_systray; systray.area._resize = resize_systray; - if (systray.area.on_screen) { - if (XGetSelectionOwner(server.dsp, server.atom._NET_SYSTEM_TRAY_SCREEN) != None) { - fprintf(stderr, "tint2 : another systray is running\n"); - systray.area.on_screen = 0; - } - } - if (systray.area.on_screen) - systray.area.on_screen = net_init(); + systray.area.on_screen = init_net(); if (!systray.area.on_screen) return; @@ -94,10 +85,7 @@ void cleanup_systray() free_area(&systray.area); - if (net_sel_win != None) { - XDestroyWindow(server.dsp, net_sel_win); - net_sel_win = None; - } + cleanup_net(); } @@ -109,11 +97,11 @@ void draw_systray(void *obj, cairo_t *c, int active) GSList *l; int icon_size; + printf("draw_systray %d %d\n", systray.area.posx, systray.area.width); icon_size = sysbar->area.height - (2 * sysbar->area.pix.border.width) - (2 * sysbar->area.paddingy); for (l = systray.list_icons; l ; l = l->next) { traywin = (TrayWindow*)l->data; - printf("draw_systray %d %d\n", systray.area.posx, systray.area.width); // watch for the icon trying to resize itself! XSelectInput(server.dsp, traywin->id, StructureNotifyMask); @@ -171,8 +159,13 @@ void resize_systray(void *obj) } -int net_init() +int init_net() { + if (XGetSelectionOwner(server.dsp, server.atom._NET_SYSTEM_TRAY_SCREEN) != None) { + fprintf(stderr, "tint2 : another systray is running\n"); + return 0; + } + // init systray protocol net_sel_win = XCreateSimpleWindow(server.dsp, server.root_win, -1, -1, 1, 1, 0, 0, 0); @@ -202,7 +195,13 @@ int net_init() } -//int width, height; +void cleanup_net() +{ + if (net_sel_win != None) { + XDestroyWindow(server.dsp, net_sel_win); + net_sel_win = None; + } +} /* void fix_geometry() diff --git a/src/systray/systraybar.h b/src/systray/systraybar.h index 071f6f7..a405dfd 100644 --- a/src/systray/systraybar.h +++ b/src/systray/systraybar.h @@ -37,8 +37,11 @@ extern Systraybar systray; void init_systray(); void cleanup_systray(); -int net_init(); + +int init_net(); +void cleanup_net(); void net_message(XClientMessageEvent *e); + void remove_icon(TrayWindow *traywin); void draw_systray(void *obj, cairo_t *c, int active); diff --git a/src/tint.c b/src/tint.c index f54bebe..6c4aa68 100644 --- a/src/tint.c +++ b/src/tint.c @@ -86,7 +86,6 @@ void init () void cleanup() { - cleanup_systray(); cleanup_panel(); if (time1_font_desc) pango_font_description_free(time1_font_desc); @@ -549,6 +548,7 @@ load_config: case UnmapNotify: case DestroyNotify: + if (!systray.area.on_screen) break; for (it = systray.list_icons; it; it = g_slist_next(it)) { if (((TrayWindow*)it->data)->id == e.xany.window) { remove_icon((TrayWindow*)it->data); @@ -558,6 +558,7 @@ load_config: break; case ClientMessage: + if (!systray.area.on_screen) break; //printf("ClientMessage\n"); if (e.xclient.message_type == server.atom._NET_SYSTEM_TRAY_OPCODE && e.xclient.format == 32 && e.xclient.window == net_sel_win) { net_message(&e.xclient); diff --git a/src/tint2 b/src/tint2 index acb995c..afcfa53 100755 Binary files a/src/tint2 and b/src/tint2 differ diff --git a/src/util/window.c b/src/util/window.c index 446bf5f..1954ad3 100644 --- a/src/util/window.c +++ b/src/util/window.c @@ -65,6 +65,22 @@ void window_toggle_shade (Window win) send_event32 (win, server.atom._NET_WM_STATE, 2, server.atom._NET_WM_STATE_SHADED); } +/* +int x11_send_expose(Display *dpy, Window dst, int x, int y, int width, int height) +{ + XEvent xe; + int rc; + xe.type = Expose; + xe.xexpose.window = dst; + xe.xexpose.x = x; + xe.xexpose.y = y; + xe.xexpose.width = width; + xe.xexpose.height = height; + xe.xexpose.count = 0; + rc = XSendEvent(tray_data.dpy, dst, True, NoEventMask, &xe); + return x11_ok() && rc != 0; +} +*/ int window_is_hidden (Window win) { diff --git a/tintrc01 b/tintrc01 index 92c7bfd..513724a 100644 --- a/tintrc01 +++ b/tintrc01 @@ -55,7 +55,7 @@ task_active_background_id = 2 #--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 0 3 3 +systray_padding = 0 4 5 systray_background_id = 0 #--------------------------------------------- diff --git a/tintrc02 b/tintrc02 index c8bf5e2..006516d 100644 --- a/tintrc02 +++ b/tintrc02 @@ -57,7 +57,7 @@ task_active_background_id = 3 #--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 0 2 2 +systray_padding = 0 2 3 systray_background_id = 0 #--------------------------------------------- diff --git a/tintrc03 b/tintrc03 index f85ad49..448368f 100644 --- a/tintrc03 +++ b/tintrc03 @@ -6,11 +6,11 @@ # BACKGROUND AND BORDER #--------------------------------------------- rounded = 10 -border_width = 1 +border_width = 0 background_color = #ffffff 40 border_color = #ffffff 60 -rounded = 1 +rounded = 10 border_width = 0 background_color = #ffffff 30 border_color = #ffffff 15 @@ -21,17 +21,17 @@ border_color = #ffffff 15 #--------------------------------------------- panel_monitor = all panel_position = bottom center -panel_size = 100% 30 +panel_size = 97% 26 panel_margin = 0 0 -panel_padding = 6 3 6 +panel_padding = 0 0 10 font_shadow = 0 panel_background_id = 0 #--------------------------------------------- # TASKBAR #--------------------------------------------- -taskbar_mode = multi_desktop -taskbar_padding = 8 0 0 +taskbar_mode = single_desktop +taskbar_padding = 0 0 0 taskbar_background_id = 1 #--------------------------------------------- @@ -41,9 +41,9 @@ task_icon = 1 task_text = 1 task_width = 160 task_centered = 1 -task_padding = 2 2 +task_padding = 5 4 task_font = Dejavu sans 8 -task_font_color = #000000 60 +task_font_color = #000000 65 task_active_font_color = #000000 100 task_background_id = 0 task_active_background_id = 2 @@ -51,13 +51,13 @@ task_active_background_id = 2 #--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -#systray_padding = 0 2 2 -systray_background_id = 0 +systray_padding = 8 3 4 +systray_background_id = 1 #--------------------------------------------- # CLOCK #--------------------------------------------- -time1_format = %A %d %H:%M +#time1_format = %A %d %H:%M time1_font = Dejavu sans 10 #time2_format = %A %d %B time2_font = sans 7 diff --git a/tintrc04 b/tintrc04 index 2e7e90e..0256d4f 100644 --- a/tintrc04 +++ b/tintrc04 @@ -50,7 +50,7 @@ task_active_background_id = 2 #--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 5 3 5 +systray_padding = 6 2 6 systray_background_id = 1 #--------------------------------------------- diff --git a/tintrc05 b/tintrc05 index 711208a..78a90f2 100644 --- a/tintrc05 +++ b/tintrc05 @@ -22,7 +22,7 @@ panel_monitor = all panel_position = bottom center panel_size = 95% 22 panel_margin = 0 0 -panel_padding = 7 0 +panel_padding = 0 0 0 font_shadow = 0 panel_background_id = 1 @@ -50,18 +50,18 @@ task_active_background_id = 2 #--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 0 3 4 +systray_padding = 4 3 4 systray_background_id = 0 #--------------------------------------------- # CLOCK #--------------------------------------------- -time1_format = %H:%M +time1_format = %H:%M:%S time1_font = sans 13 #time2_format = %A %d %B time2_font = sans 7 clock_font_color = #ffffff 90 -clock_padding = 1 0 +clock_padding = 4 0 clock_background_id = 0 #--------------------------------------------- diff --git a/tintrc07 b/tintrc07 index 98cd217..199ef00 100644 --- a/tintrc07 +++ b/tintrc07 @@ -50,7 +50,7 @@ task_active_background_id = 2 #--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 6 3 4 +systray_padding = 6 3 5 systray_background_id = 1 #---------------------------------------------