]> Dogcows Code - chaz/tint2/commitdiff
reverted my last checkin, because I forgot that XCopyArea only works if src.depth...
authorAndreas Fink <andreas.fink85@googlemail.com>
Sun, 17 Jan 2010 20:02:56 +0000 (20:02 +0000)
committerAndreas Fink <andreas.fink85@googlemail.com>
Sun, 17 Jan 2010 20:02:56 +0000 (20:02 +0000)
minor bugfix if in hidden mode a new tray icon appears

src/panel.c
src/systray/systraybar.c
src/tint.c

index eb839021d5740c1b04576ca6159ca98384e7cbeb..0c5c3837b4825003dc2b71666cc086e017872dc6 100644 (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;
 }
 
index c07ae74c717343c094b406e3e27673d45dd2439b..b369183696f871f08bd61ef47473754340d6e925 100644 (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);
                }
        }
 }
index 3a7b82b8415f8590d29723dd0899a7589dac8327..1a5c4bbe8ba68bb8251693dfcb722aa8dddccf78 100644 (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
This page took 0.022803 seconds and 4 git commands to generate.