Alexandre Julliard : winex11: Only take managed popups into account when deciding whether to make a window managed .

Alexandre Julliard julliard at winehq.org
Mon Dec 19 13:39:22 CST 2011


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Dec 19 11:12:38 2011 +0100

winex11: Only take managed popups into account when deciding whether to make a window managed.

---

 dlls/winex11.drv/window.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 1fb339a..0411ddf 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -159,12 +159,15 @@ struct has_popup_result
     BOOL found;
 };
 
-static BOOL CALLBACK has_popup( HWND hwnd, LPARAM lparam )
+static BOOL CALLBACK has_managed_popup( HWND hwnd, LPARAM lparam )
 {
     struct has_popup_result *result = (struct has_popup_result *)lparam;
+    struct x11drv_win_data *data;
 
     if (hwnd == result->hwnd) return FALSE;  /* popups are always above owner */
-    result->found = (GetWindow( hwnd, GW_OWNER ) == result->hwnd);
+    if (!(data = X11DRV_get_win_data( hwnd ))) return TRUE;
+    if (GetWindow( hwnd, GW_OWNER ) != result->hwnd) return TRUE;
+    result->found = data->managed;
     return !result->found;
 }
 
@@ -174,7 +177,7 @@ static BOOL has_owned_popups( HWND hwnd )
 
     result.hwnd = hwnd;
     result.found = FALSE;
-    EnumWindows( has_popup, (LPARAM)&result );
+    EnumWindows( has_managed_popup, (LPARAM)&result );
     return result.found;
 }
 




More information about the wine-cvs mailing list