- Fix wine Msg test_SetActiveWindow with six remaining.

svn path=/trunk/; revision=66447
This commit is contained in:
James Tabor 2015-02-25 04:37:56 +00:00
parent 3b79ee9cb8
commit 72c5a3a810
2 changed files with 30 additions and 0 deletions

View file

@ -717,6 +717,8 @@ co_IntMouseActivateWindow(PWND Wnd)
BOOL FASTCALL
UserSetActiveWindow(PWND Wnd)
{
PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
if (Wnd) // Must have a window!
{
if ((Wnd->style & (WS_POPUP|WS_CHILD)) == WS_CHILD) return FALSE;
@ -734,7 +736,34 @@ UserSetActiveWindow(PWND Wnd)
SetActiveWindow(0);
check_wnd_state(0, 0, 0, 0); <-- This should pass if ShowWindow does it's job!!! As of 10/28/2012 it does!
Now Handle wines Msg.c test_SetActiveWindow( 0 )...
*/
TRACE("USAW: Previous active window\n");
if ( gpqForegroundPrev &&
gpqForegroundPrev->spwndActivePrev &&
(gpqForegroundPrev->spwndActivePrev->style & (WS_VISIBLE|WS_DISABLED)) == WS_VISIBLE &&
!(gpqForegroundPrev->spwndActivePrev->state2 & WNDS2_BOTTOMMOST) &&
(Wnd = VerifyWnd(gpqForegroundPrev->spwndActivePrev)) != NULL )
{
TRACE("USAW:PAW hwnd %p\n",Wnd?Wnd->head.h:NULL);
return co_IntSetActiveWindow(Wnd, FALSE, TRUE, FALSE);
}
// Activate anyone but the active window.
if ( pti->MessageQueue->spwndActive &&
(Wnd = VerifyWnd(pti->MessageQueue->spwndActive)) != NULL )
{
ERR("USAW:AOWM hwnd %p\n",Wnd?Wnd->head.h:NULL);
if (!ActivateOtherWindowMin(Wnd))
{
// Okay, now go find someone else to play with!
ERR("USAW: Going to WPAOW\n");
co_WinPosActivateOtherWindow(Wnd);
}
return TRUE;
}
TRACE("USAW: Nothing\n");
return FALSE;
}

View file

@ -44,6 +44,7 @@ FORCEINLINE BOOL IntPtInWindow(PWND pwnd, INT x, INT y)
y - pwnd->rcWindow.top);
}
BOOL FASTCALL ActivateOtherWindowMin(PWND);
UINT FASTCALL co_WinPosArrangeIconicWindows(PWND parent);
BOOL FASTCALL IntGetClientOrigin(PWND Window, LPPOINT Point);
LRESULT FASTCALL co_WinPosGetNonClientSize(PWND Window, RECTL* WindowRect, RECTL* ClientRect);