// freedesktop specification doesn't allow multi systray
Systraybar systray;
+int refresh_systray;
void init_systray()
systray.area.parent = panel;
systray.area.panel = panel;
+ systray.area._draw_foreground = draw_systray;
systray.area._resize = resize_systray;
+ refresh_systray = 0;
// configure systray
// draw only one systray (even with multi panel)
}
+void draw_systray(void *obj, cairo_t *c, int active)
+{
+ // tint2 don't draw systray icons. just the background.
+ refresh_systray = 1;
+}
+
+
void resize_systray(void *obj)
{
Systraybar *sysbar = obj;
}
-void refresh_systray()
+void refresh_systray_icon()
{
TrayWindow *traywin;
GSList *l;
extern Window net_sel_win;
extern Systraybar systray;
+extern int refresh_systray;
void init_systray();
void remove_icon(TrayWindow *traywin);
+void draw_systray(void *obj, cairo_t *c, int active);
+
void resize_systray(void *obj);
-void refresh_systray();
+void refresh_systray_icon();
#endif
if (panel_refresh) {
panel_refresh = 0;
+ if (refresh_systray) {
+ panel = (Panel*)systray.area.panel;
+ XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None);
+ }
for (i=0 ; i < nb_panel ; i++) {
panel = &panel1[i];
- if (panel == systray.area.panel)
- XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None);
-
if (panel->temp_pmap) XFreePixmap(server.dsp, panel->temp_pmap);
panel->temp_pmap = XCreatePixmap(server.dsp, server.root_win, panel->area.width, panel->area.height, server.depth);
refresh(&panel->area);
XCopyArea(server.dsp, panel->temp_pmap, panel->main_win, server.gc, 0, 0, panel->area.width, panel->area.height, 0, 0);
-
- if (panel == systray.area.panel) {
- // tint2 doen't draw systray icons. it just redraw background.
- XSetWindowBackgroundPixmap (server.dsp, panel->main_win, panel->temp_pmap);
- // force icon's refresh
- refresh_systray();
- }
}
XFlush (server.dsp);
+
+ if (refresh_systray) {
+ refresh_systray = 0;
+ panel = (Panel*)systray.area.panel;
+ // tint2 doen't draw systray icons. it just redraw background.
+ XSetWindowBackgroundPixmap (server.dsp, panel->main_win, panel->temp_pmap);
+ // force icon's refresh
+ refresh_systray_icon();
+ }
}
}
}