Author: jimtabor Date: Wed Feb 25 04:37:56 2015 New Revision: 66447
URL: http://svn.reactos.org/svn/reactos?rev=66447&view=rev Log: [NtUser] - Fix wine Msg test_SetActiveWindow with six remaining.
Modified: trunk/reactos/win32ss/user/ntuser/focus.c trunk/reactos/win32ss/user/ntuser/winpos.h
Modified: trunk/reactos/win32ss/user/ntuser/focus.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/focus.c... ============================================================================== --- trunk/reactos/win32ss/user/ntuser/focus.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/ntuser/focus.c [iso-8859-1] Wed Feb 25 04:37:56 2015 @@ -717,6 +717,8 @@ 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 @@ 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; }
Modified: trunk/reactos/win32ss/user/ntuser/winpos.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/winpos.... ============================================================================== --- trunk/reactos/win32ss/user/ntuser/winpos.h [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/ntuser/winpos.h [iso-8859-1] Wed Feb 25 04:37:56 2015 @@ -44,6 +44,7 @@ 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);