]> Dogcows Code - chaz/tint2/blobdiff - src/systray/systraybar.c
should fixed issue 208
[chaz/tint2] / src / systray / systraybar.c
index 8b613a6fc7ecd0602a32edd3192d975a510614d6..2e34f3e63a5353d10035c76387bab190903a7250 100644 (file)
@@ -208,6 +208,8 @@ void resize_systray(void *obj)
                XMoveResizeWindow(server.dsp, traywin->id, traywin->x, traywin->y, icon_size, icon_size);
                XResizeWindow(server.dsp, traywin->tray_id, icon_size, icon_size);
        }
+       // resize force the redraw
+       systray.area.redraw = 1;
 }
 
 
@@ -345,17 +347,7 @@ gboolean add_icon(Window id)
 
        error = FALSE;
        XWindowAttributes attr;
-/*     GSList *l;
-       printf("add_icon\n");
-       for (l = systray.list_icons; l ; l = l->next) {
-               traywin = (TrayWindow*)l->data;
-               //if (traywin->hide) continue;
-
-               XGetWindowAttributes(server.dsp, traywin->tray_id, &attr);
-               printf("  icon %lx, depth %d, width %d, height %d\n", traywin->tray_id, attr.depth, attr.width, attr.height);
-       }*/
        XGetWindowAttributes(server.dsp, id, &attr);
-       //printf("last icon %lx, depth %d, width %d, height %d\n", id, attr.depth, attr.width, attr.height);
        unsigned long mask = 0;
        XSetWindowAttributes set_attr;
        if (attr.depth != server.depth || systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0 ) {
@@ -433,7 +425,6 @@ gboolean add_icon(Window id)
        else
                systray.list_icons = g_slist_insert_sorted(systray.list_icons, traywin, compare_traywindows);
        systray.area.resize = 1;
-       systray.area.redraw = 1;
        //printf("add_icon id %lx, %d\n", id, g_slist_length(systray.list_icons));
 
        // watch for the icon trying to resize itself!
@@ -463,7 +454,6 @@ void remove_icon(TrayWindow *traywin)
        // remove from our list
        systray.list_icons = g_slist_remove(systray.list_icons, traywin);
        systray.area.resize = 1;
-       systray.area.redraw = 1;
        //printf("remove_icon id %lx, %d\n", traywin->id);
 
        XSelectInput(server.dsp, traywin->tray_id, NoEventMask);
@@ -548,7 +538,8 @@ void systray_render_icon_now(void* t)
        XCopyArea(server.dsp, systray.area.pix, panel->main_win, server.gc, traywin->x-systray.area.posx, traywin->y-systray.area.posy, traywin->width, traywin->height, traywin->x, traywin->y);
        imlib_free_image_and_decache();
 
-       XDamageSubtract(server.dsp, traywin->damage, None, None);
+       if (traywin->damage)
+               XDamageSubtract(server.dsp, traywin->damage, None, None);
        XFlush(server.dsp);
 }
 
This page took 0.02379 seconds and 4 git commands to generate.