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
This commit is contained in:
Andreas.Fink85 2010-01-17 20:02:56 +00:00
parent 5b645eeffb
commit 0e0ae86bfa
3 changed files with 9 additions and 7 deletions

View file

@ -748,6 +748,7 @@ void autohide_show(void* p)
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;
}

View file

@ -434,10 +434,10 @@ gboolean add_icon(Window id)
}
// 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 systray_render_icon(TrayWindow* traywin)
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 @@ void refresh_systray_icon()
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);
}
}
}

View file

@ -703,7 +703,6 @@ int main (int argc, char *argv[])
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