reverted my last checkin, because I forgot that XCopyArea only works if src.depth == dest.depth minor bugfix if in hidden mode a new tray icon appears git-svn-id: http://tint2.googlecode.com/svn/trunk@360 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
Andreas.Fink85 Andreas.Fink85@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
3 files changed,
9 insertions(+),
7 deletions(-)
M
src/panel.c
→
src/panel.c
@@ -748,6 +748,7 @@ 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; }
M
src/systray/systraybar.c
→
src/systray/systraybar.c
@@ -434,10 +434,10 @@ XCompositeRedirectWindow(server.dsp, traywin->id, CompositeRedirectManual);
} // show the window - if (!traywin->hide) { + if (!traywin->hide) XMapRaised(server.dsp, traywin->tray_id); + if (!traywin->hide && !panel->is_hidden) XMapRaised(server.dsp, traywin->id); - } // changed in systray force resize on panel panel->area.resize = 1;@@ -553,7 +553,6 @@
void refresh_systray_icon() { - Panel* panel = systray.area.panel; TrayWindow *traywin; GSList *l; for (l = systray.list_icons; l ; l = l->next) {@@ -562,10 +561,13 @@ if (traywin->hide) continue;
if (real_transparency || systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0) systray_render_icon(traywin); else { - Pixmap pix = XCreatePixmap(server.dsp, server.root_win, traywin->width, traywin->height, server.depth); - XCopyArea(server.dsp, panel->temp_pmap, pix, server.gc, traywin->x, traywin->y, traywin->width, traywin->height, 0, 0); + // comment by andreas: I'm still not sure, what exactly we need to do here... Somehow trayicons which do not + // offer the same depth as tint2 does, need to draw a background pixmap, but this cannot be done with + // XCopyArea... So we actually need XRenderComposite??? +// Pixmap pix = XCreatePixmap(server.dsp, server.root_win, traywin->width, traywin->height, server.depth); +// XCopyArea(server.dsp, panel->temp_pmap, pix, server.gc, traywin->x, traywin->y, traywin->width, traywin->height, 0, 0); +// XSetWindowBackgroundPixmap(server.dsp, traywin->id, pix); XClearArea(server.dsp, traywin->tray_id, 0, 0, traywin->width, traywin->height, True); - XSetWindowBackgroundPixmap(server.dsp, traywin->id, pix); } } }
M
src/tint.c
→
src/tint.c
@@ -703,7 +703,6 @@
panel = (Panel*)systray.area.panel; if (refresh_systray && !panel->is_hidden) { 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