From afc4d060e002f51ed317818e875dae51fbccec12 Mon Sep 17 00:00:00 2001 From: Andreas Fink Date: Sun, 3 Jan 2010 09:49:55 +0000 Subject: [PATCH] *fix* broke systray with last checkin for fake transparency *fix* some real transparency stuff fixed... it seems as if it is done now --- src/panel.c | 19 +++++++++---------- src/systray/systraybar.c | 2 +- src/tint.c | 1 + src/util/area.c | 3 +-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/panel.c b/src/panel.c index 8bb9f14..e61fe19 100644 --- a/src/panel.c +++ b/src/panel.c @@ -488,17 +488,16 @@ void set_panel_background(Panel *p) if (real_transparency) { clear_pixmap(p->area.pix.pmap, 0, 0, p->area.width, p->area.height); - return; // no need for background pixmap, a transparent one is enough } - - get_root_pixmap(); - - // copy background (server.root_pmap) in panel.area.pix.pmap - 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) ; - XFillRectangle(server.dsp, p->area.pix.pmap, server.gc, 0, 0, p->area.width, p->area.height); + else { + get_root_pixmap(); + // copy background (server.root_pmap) in panel.area.pix.pmap + 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) ; + XFillRectangle(server.dsp, p->area.pix.pmap, server.gc, 0, 0, p->area.width, p->area.height); + } // draw background panel cairo_surface_t *cs; diff --git a/src/systray/systraybar.c b/src/systray/systraybar.c index 38acd62..822441b 100644 --- a/src/systray/systraybar.c +++ b/src/systray/systraybar.c @@ -514,7 +514,7 @@ void refresh_systray_icon() traywin = (TrayWindow*)l->data; if (traywin->hide) continue; if (real_transparency) systray_render_icons(traywin); - else XClearArea(server.dsp, traywin->id, 0, 0, traywin->width, traywin->height, False); + else XClearArea(server.dsp, traywin->id, 0, 0, traywin->width, traywin->height, True); } if (real_transparency) XFlush(server.dsp); diff --git a/src/tint.c b/src/tint.c index 8f17653..433eb55 100644 --- a/src/tint.c +++ b/src/tint.c @@ -830,6 +830,7 @@ int main (int argc, char *argv[]) default: if (e.type == XDamageNotify+damage_event) + // TODO: update only the damaged icon, not all of them systray.area.redraw = 1; } } diff --git a/src/util/area.c b/src/util/area.c index ae9c541..3b8a468 100644 --- a/src/util/area.c +++ b/src/util/area.c @@ -110,8 +110,7 @@ void draw (Area *a, int active) // add layer of root pixmap (or clear pixmap if real_transparency==true) if (real_transparency) clear_pixmap(*pmap, 0 ,0, a->width, a->height); - else - XCopyArea (server.dsp, ((Panel *)a->panel)->temp_pmap, *pmap, server.gc, a->posx, a->posy, a->width, a->height, 0, 0); + XCopyArea (server.dsp, ((Panel *)a->panel)->temp_pmap, *pmap, server.gc, a->posx, a->posy, a->width, a->height, 0, 0); cairo_surface_t *cs; cairo_t *c; -- 2.44.0