X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fsystray%2Fsystraybar.c;h=927f9cb5e9e98cf4d48a721678a49b58262d50a4;hb=2e6b12080e5187b0e0db377cd4df22405119e5b8;hp=18c1f22e97ed3e4523316d85f75e6274704812da;hpb=a1783c29169a83f9359106678c26fdc28815ccde;p=chaz%2Ftint2 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()