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;
}
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 ) {
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!
// 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);
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);
}