From 2439d0030f67465d09dc9e177d680ff972f9564a Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 18 Jan 2015 22:39:56 +0000 Subject: [PATCH] [NtUser] - Fix return to previously active window. See CORE-106. svn path=/trunk/; revision=66055 --- reactos/win32ss/user/ntuser/window.c | 3 ++- reactos/win32ss/user/ntuser/winpos.c | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/user/ntuser/window.c b/reactos/win32ss/user/ntuser/window.c index 1e62dc6f82b..87c1a892fc0 100644 --- a/reactos/win32ss/user/ntuser/window.c +++ b/reactos/win32ss/user/ntuser/window.c @@ -2594,7 +2594,8 @@ BOOLEAN co_UserDestroyWindow(PVOID Object) */ if (!co_WinPosShowWindow(Window, SW_HIDE)) { // Rule #1. - if (ti->MessageQueue->spwndActive == Window && ti->MessageQueue == IntGetFocusMessageQueue()) + if ( ti->MessageQueue->spwndActive == Window || + (ti->MessageQueue->spwndActive == NULL && ti->MessageQueue == IntGetFocusMessageQueue()) ) { co_WinPosActivateOtherWindow(Window); } diff --git a/reactos/win32ss/user/ntuser/winpos.c b/reactos/win32ss/user/ntuser/winpos.c index 942c8338583..a436f5db688 100644 --- a/reactos/win32ss/user/ntuser/winpos.c +++ b/reactos/win32ss/user/ntuser/winpos.c @@ -349,11 +349,16 @@ co_WinPosActivateOtherWindow(PWND Wnd) { WndTo = Wnd->head.pti->MessageQueue->spwndActivePrev; if (can_activate_window( WndTo )) goto done; + } - // Find any window to bring to top. Works Okay for wine. + // Find any window to bring to top. Works Okay for wine since it does not see X11 windows. WndTo = UserGetDesktopWindow(); WndTo = WndTo->spwndChild; + if ( WndTo == NULL ) + { + return; + } for (;;) { if (WndTo == Wnd)