Fix explorer regression caused by systray patch

James Liggett jrliggett at cox.net
Wed Aug 23 15:35:02 CDT 2006


Move systray_dock_window call to X11DRV_CreateWindow so that it can
safely call SetWindowPos without having _CheckNotSysLevel crash the
explorer.

---

 dlls/winex11.drv/window.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

89358c780ab0e16566c3bc287defbc3f3257f038
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 30ef89b..ff5c361 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -515,10 +515,6 @@ void X11DRV_set_wm_hints( Display *displ
 
     /* size hints */
     set_size_hints( display, data, style );
-    
-    /* Dock system tray windows. */
-    if (ex_style & WS_EX_TRAYWINDOW)
-        systray_dock_window( display, data );
 
     /* set the WM_CLIENT_MACHINE and WM_LOCALE_NAME properties */
     XSetWMProperties(display, data->whole_window, NULL, NULL, NULL, 0, NULL, NULL, NULL);
@@ -1006,7 +1002,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CRE
     struct x11drv_win_data *data;
     HWND insert_after;
     RECT rect;
-    DWORD style;
+    DWORD style, ex_style;
     CBT_CREATEWNDA cbtc;
     CREATESTRUCTA cbcs;
     BOOL ret = FALSE;
@@ -1167,6 +1163,13 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CRE
         SetWindowPos( hwnd, 0, newPos.left, newPos.top,
                       newPos.right, newPos.bottom, swFlag );
     }
+        
+    /* Dock system tray windows. */
+    /* Dock after the window is created so we don't have problems calling 
+     * SetWindowPos. */
+    ex_style = GetWindowLongW( hwnd, GWL_EXSTYLE );
+    if (ex_style & WS_EX_TRAYWINDOW)
+        systray_dock_window( display, data );
 
     return TRUE;
 
-- 
1.2.4






More information about the wine-patches mailing list