Alexandre Julliard : winex11: Only take managed popups into account when deciding whether to make a window managed .
Module: wine Branch: master Commit: c1297ac0d8719972203b23e18da04f84c7486f6e URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1297ac0d8719972203b23e18d... Author: Alexandre Julliard <julliard(a)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; }
participants (1)
-
Alexandre Julliard