[try 3][systray 4]: explorer: clear systray window area when icon is changed

Kirill K. Smirnov lich at math.spbu.ru
Thu Jan 4 01:54:01 CST 2007


I forgot to attach patch itself ;-)
-------------- next part --------------
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 1430563..ebf6d50 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1324,12 +1325,23 @@ void X11DRV_SetWindowIcon( HWND hwnd, UI
     Display *display = thread_display();
     struct x11drv_win_data *data;
     XWMHints* wm_hints;
-
-    if (type != ICON_BIG) return;  /* nothing to do here */
+    DWORD ex_style;
 
     if (!(data = X11DRV_get_win_data( hwnd ))) return;
     if (!data->whole_window) return;
+
+    ex_style = GetWindowLongW( hwnd, GWL_EXSTYLE );
+    if (ex_style & WS_EX_TRAYWINDOW)
+    {
+        WINE_TRACE("clearing systray background\n");
+        wine_tsx11_lock();
+        XClearWindow(display, data->whole_window);
+        wine_tsx11_unlock();
+        return;
+    }
+
     if (!data->managed) return;
+    if (type != ICON_BIG) return;  /* nothing to do here */
 
     wine_tsx11_lock();
     if (!(wm_hints = XGetWMHints( display, data->whole_window ))) wm_hints = XAllocWMHints();


More information about the wine-patches mailing list