X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fpanel.c;h=eb839021d5740c1b04576ca6159ca98384e7cbeb;hb=462228f2e82c6e5f61baeb49b6358273728baa90;hp=3250806806398a38f1b9f2ae485f15b7a6ec6c01;hpb=ea034ed97924271fbda23bd217984931605374e3;p=chaz%2Ftint2 diff --git a/src/panel.c b/src/panel.c index 3250806..eb83902 100644 --- a/src/panel.c +++ b/src/panel.c @@ -318,6 +318,11 @@ void cleanup_panel() 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; + } } @@ -546,6 +551,12 @@ void set_panel_background(Panel *p) 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); } @@ -555,7 +566,11 @@ void set_panel_background(Panel *p) 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); } @@ -571,11 +586,6 @@ void set_panel_background(Panel *p) 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); } @@ -725,7 +735,7 @@ void autohide_show(void* p) 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); @@ -750,7 +760,7 @@ void autohide_hide(void* p) 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)