Module: wine Branch: master Commit: 7257b62bd1b95438c651716b48bf3d7438eb235a URL: http://source.winehq.org/git/wine.git/?a=commit;h=7257b62bd1b95438c651716b48...
Author: Piotr Caban piotr@codeweavers.com Date: Wed May 28 12:57:47 2014 +0200
user32: Try to activate topmost activable window in WINPOS_ActivateOtherWindow.
---
dlls/user32/tests/win.c | 5 +++++ dlls/user32/winpos.c | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c index cffceb3..cbcd6b6 100644 --- a/dlls/user32/tests/win.c +++ b/dlls/user32/tests/win.c @@ -3766,6 +3766,11 @@ static void test_SetParent(void) ok(bret, "SetForegroundWindow() failed\n"); check_active_state(popup, popup, popup);
+ ShowWindow(parent, SW_SHOW); + SetActiveWindow(popup); + ok(DestroyWindow(popup), "DestroyWindow() failed\n"); + check_active_state(parent, parent, parent); + ok(DestroyWindow(parent), "DestroyWindow() failed\n");
ok(!IsWindow(parent), "parent still exists\n"); diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index 57fefe3..0a70942 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -1536,7 +1536,19 @@ void WINPOS_ActivateOtherWindow(HWND hwnd) for (;;) { if (!(hwndTo = GetWindow( hwndTo, GW_HWNDNEXT ))) break; - if (can_activate_window( hwndTo )) break; + if (can_activate_window( hwndTo )) goto done; + } + + hwndTo = GetTopWindow( 0 ); + for (;;) + { + if (hwndTo == hwnd) + { + hwndTo = 0; + break; + } + if (can_activate_window( hwndTo )) goto done; + if (!(hwndTo = GetWindow( hwndTo, GW_HWNDNEXT ))) break; }
done: