Alexandre Julliard : winex11: Setting window z-order using a sibling doesn' t work with some window managers.

Alexandre Julliard julliard at winehq.org
Mon Mar 24 15:21:41 CDT 2008


Module: wine
Branch: master
Commit: 5787c12ba66c055bc0747ef63644df1dbfad86be
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5787c12ba66c055bc0747ef63644df1dbfad86be

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Mar 24 15:47:28 2008 +0100

winex11: Setting window z-order using a sibling doesn't work with some window managers.

So let's see what happens if we don't set z-order at all in that case.

---

 dlls/winex11.drv/window.c |   20 ++++----------------
 1 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 4802add..4a393d9 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1048,20 +1048,8 @@ void X11DRV_sync_window_position( Display *display, struct x11drv_win_data *data
             changes.stack_mode = Above;
             mask |= CWStackMode;
         }
-        else
-        {
-            /* should use stack_mode Below but most window managers don't get it right */
-            /* so move it above the next one in Z order */
-            HWND next = GetWindow( data->hwnd, GW_HWNDNEXT );
-            while (next && !(GetWindowLongW( next, GWL_STYLE ) & WS_VISIBLE))
-                next = GetWindow( next, GW_HWNDNEXT );
-            if (next)
-            {
-                changes.stack_mode = Above;
-                changes.sibling = X11DRV_get_whole_window(next);
-                mask |= CWStackMode | CWSibling;
-            }
-        }
+        /* should use stack_mode Below but most window managers don't get it right */
+        /* and Above with a sibling doesn't work so well either, so we ignore it */
     }
 
     /* only the size is allowed to change for the desktop window */
@@ -1071,8 +1059,8 @@ void X11DRV_sync_window_position( Display *display, struct x11drv_win_data *data
     {
         DWORD style = GetWindowLongW( data->hwnd, GWL_STYLE );
 
-        TRACE( "setting win %lx pos %d,%d,%dx%d after %lx changes=%x\n",
-               data->whole_window, data->whole_rect.left, data->whole_rect.top,
+        TRACE( "setting win %p/%lx pos %d,%d,%dx%d after %lx changes=%x\n",
+               data->hwnd, data->whole_window, data->whole_rect.left, data->whole_rect.top,
                data->whole_rect.right - data->whole_rect.left,
                data->whole_rect.bottom - data->whole_rect.top, changes.sibling, mask );
 




More information about the wine-cvs mailing list