all repos — tint2 @ 0e0ae86bfa2668a517d7ceb76e17a31b1cfb2693

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

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
commit

0e0ae86bfa2668a517d7ceb76e17a31b1cfb2693

parent

5b645eeffb321cbd2fb9e9b38690a508de21d80f

3 files changed, 9 insertions(+), 7 deletions(-)

jump to
M src/panel.csrc/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.csrc/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.csrc/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