pango_font_description_free(panel_config.g_task.font_desc);
panel_config.g_task.font_desc = 0;
}
+
+ if (backgrounds) {
+ g_array_free(backgrounds, 1);
+ backgrounds = 0;
+ }
}
if (p->area.pix) XFreePixmap (server.dsp, p->area.pix);
p->area.pix = XCreatePixmap (server.dsp, server.root_win, p->area.width, p->area.height, server.depth);
+ int xoff=0, yoff=0;
+ if (panel_horizontal && panel_position & BOTTOM)
+ yoff = p->area.height-p->hidden_height;
+ else if (!panel_horizontal && panel_position & RIGHT)
+ xoff = p->area.width-p->hidden_width;
+
if (real_transparency) {
clear_pixmap(p->area.pix, 0, 0, p->area.width, p->area.height);
}
Window dummy;
int x, y;
XTranslateCoordinates(server.dsp, p->main_win, server.root_win, 0, 0, &x, &y, &dummy);
- XSetTSOrigin(server.dsp, server.gc, -x, -y) ;
+ if (panel_autohide && p->is_hidden) {
+ x -= xoff;
+ y -= yoff;
+ }
+ XSetTSOrigin(server.dsp, server.gc, -x, -y);
XFillRectangle(server.dsp, p->area.pix, server.gc, 0, 0, p->area.width, p->area.height);
}
if (panel_autohide) {
if (p->hidden_pixmap) XFreePixmap(server.dsp, p->hidden_pixmap);
p->hidden_pixmap = XCreatePixmap(server.dsp, server.root_win, p->hidden_width, p->hidden_height, server.depth);
- int xoff=0, yoff=0;
- if (panel_horizontal && panel_position & BOTTOM)
- yoff = p->area.height-p->hidden_height;
- else if (!panel_horizontal && panel_position & RIGHT)
- xoff = p->area.width-p->hidden_width;
XCopyArea(server.dsp, p->area.pix, p->hidden_pixmap, server.gc, xoff, yoff, p->hidden_width, p->hidden_height, 0, 0);
}
if (panel_strut_policy == STRUT_FOLLOW_SIZE)
update_strut(p);
- XMapSubwindows(server.dsp, panel->main_win);
+ XMapSubwindows(server.dsp, panel->main_win); // systray windows
if (panel_horizontal) {
if (panel_position & TOP)
XResizeWindow(server.dsp, panel->main_win, panel->area.width, panel->area.height);
else
XMoveResizeWindow(server.dsp, panel->main_win, panel->posx, panel->posy, panel->area.width, panel->area.height);
}
+ refresh_systray = 1; // ugly hack, because we actually only need to call XSetBackgroundPixmap
panel_refresh = 1;
}
if (panel_strut_policy == STRUT_FOLLOW_SIZE)
update_strut(p);
- XUnmapSubwindows(server.dsp, panel->main_win);
+ XUnmapSubwindows(server.dsp, panel->main_win); // systray windows
int diff = (panel_horizontal ? panel->area.height : panel->area.width) - panel_autohide_height;
if (panel_horizontal) {
if (panel_position & TOP)