- Fix return to previously active window. See CORE-106.

svn path=/trunk/; revision=66055
This commit is contained in:
James Tabor 2015-01-18 22:39:56 +00:00
parent 2bf5258b98
commit 2439d0030f
2 changed files with 8 additions and 2 deletions

View file

@ -2594,7 +2594,8 @@ BOOLEAN co_UserDestroyWindow(PVOID Object)
*/ */
if (!co_WinPosShowWindow(Window, SW_HIDE)) if (!co_WinPosShowWindow(Window, SW_HIDE))
{ // Rule #1. { // 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); co_WinPosActivateOtherWindow(Window);
} }

View file

@ -349,11 +349,16 @@ co_WinPosActivateOtherWindow(PWND Wnd)
{ {
WndTo = Wnd->head.pti->MessageQueue->spwndActivePrev; WndTo = Wnd->head.pti->MessageQueue->spwndActivePrev;
if (can_activate_window( WndTo )) goto done; 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 = UserGetDesktopWindow();
WndTo = WndTo->spwndChild; WndTo = WndTo->spwndChild;
if ( WndTo == NULL )
{
return;
}
for (;;) for (;;)
{ {
if (WndTo == Wnd) if (WndTo == Wnd)