Author: jimtabor
Date: Wed Jun 11 19:48:43 2014
New Revision: 63592

URL: http://svn.reactos.org/svn/reactos?rev=63592&view=rev
Log:
[Win32k]
- Apply patch from r63350. Modified so the WM_ACTIVATEAPP before the 
WM_NC/ACTIVATE call not after.

Modified:
    trunk/reactos/win32ss/user/ntuser/focus.c

Modified: trunk/reactos/win32ss/user/ntuser/focus.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/focus.c?rev=63592&r1=63591&r2=63592&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/focus.c   [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/focus.c   [iso-8859-1] Wed Jun 11 
19:48:43 2014
@@ -102,10 +102,12 @@
    PTHREADINFO pti, ptiOld, ptiNew;
    BOOL InAAPM = FALSE;
 
+   //ERR("SendActivateMessages\n");
+
+   pti = PsGetCurrentThreadWin32Thread();
+
    if (Window)
    {
-      pti = PsGetCurrentThreadWin32Thread();
-
       UserRefObjectCo(Window, &Ref);
 
       if (WindowPrev) UserRefObjectCo(WindowPrev, &RefPrev);
@@ -163,56 +165,62 @@
             ExFreePool(phwndTopLevel);
           }
       }
-      ////
-      OldTID = WindowPrev ? IntGetWndThreadId(WindowPrev) : NULL;
-      NewTID = IntGetWndThreadId(Window);
-      ptiOld = WindowPrev ? WindowPrev->head.pti : NULL;
-      ptiNew = Window->head.pti;
-
-      //ERR("SendActivateMessage Old -> %x, New -> %x\n", OldTID, NewTID);
-
-      if (!(pti->TIF_flags & TIF_INACTIVATEAPPMSG) &&
-           (!WindowPrev || OldTID != NewTID) )
-      {
-         PWND cWindow;
-         HWND *List, *phWnd;
-
-         List = IntWinListChildren(UserGetDesktopWindow());
-         if ( List )
-         {
-            if ( OldTID )
+   }
+   ////
+   OldTID = WindowPrev ? IntGetWndThreadId(WindowPrev) : NULL;
+   NewTID = Window ? IntGetWndThreadId(Window) : NULL;
+   ptiOld = WindowPrev ? WindowPrev->head.pti : NULL;
+   ptiNew = Window ? Window->head.pti : NULL;
+
+   //ERR("SendActivateMessage Old -> %x, New -> %x\n", OldTID, NewTID);
+
+   if (!(pti->TIF_flags & TIF_INACTIVATEAPPMSG) &&
+        (!WindowPrev || OldTID != NewTID) )
+   {
+      PWND cWindow;
+      HWND *List, *phWnd;
+
+      List = IntWinListChildren(UserGetDesktopWindow());
+      if ( List )
+      {
+         if ( OldTID )
+         {
+            ptiOld->TIF_flags |= TIF_INACTIVATEAPPMSG;
+            // Note: Do not set pci flags, this does crash!
+            for (phWnd = List; *phWnd; ++phWnd)
             {
-               ptiOld->TIF_flags |= TIF_INACTIVATEAPPMSG;
-               // Note: Do not set pci flags, this does crash!
-               for (phWnd = List; *phWnd; ++phWnd)
-               {
-                  cWindow = ValidateHwndNoErr(*phWnd);
-                  if (cWindow && cWindow->head.pti == ptiOld)
-                  {  // FALSE if the window is being deactivated,
-                     // ThreadId that owns the window being activated.
-                    co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, FALSE, 
(LPARAM)NewTID);
-                  }
-               }
-               ptiOld->TIF_flags &= ~TIF_INACTIVATEAPPMSG;
-            }
-            if ( NewTID )
-            {  //// Prevents a resource crash due to reentrance!
-               InAAPM = TRUE;
-               pti->TIF_flags |= TIF_INACTIVATEAPPMSG;
-               ////
-               for (phWnd = List; *phWnd; ++phWnd)
-               {
-                  cWindow = ValidateHwndNoErr(*phWnd);
-                  if (cWindow && cWindow->head.pti == ptiNew)
-                  { // TRUE if the window is being activated,
-                    // ThreadId that owns the window being deactivated.
-                    co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, TRUE, 
(LPARAM)OldTID);
-                  }
+               cWindow = ValidateHwndNoErr(*phWnd);
+               if (cWindow && cWindow->head.pti == ptiOld)
+               { // FALSE if the window is being deactivated,
+                 // ThreadId that owns the window being activated.
+                 //ERR("SendActivateMessage Old\n");
+                 co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, FALSE, 
(LPARAM)NewTID);
                }
             }
-            ExFreePoolWithTag(List, USERTAG_WINDOWLIST);
-         }
-      }
+            ptiOld->TIF_flags &= ~TIF_INACTIVATEAPPMSG;
+         }
+         if ( NewTID )
+         {  //// Prevents a resource crash due to reentrance!
+            InAAPM = TRUE;
+            pti->TIF_flags |= TIF_INACTIVATEAPPMSG;
+            ////
+            for (phWnd = List; *phWnd; ++phWnd)
+            {
+               cWindow = ValidateHwndNoErr(*phWnd);
+               if (cWindow && cWindow->head.pti == ptiNew)
+               { // TRUE if the window is being activated,
+                 // ThreadId that owns the window being deactivated.
+                 //ERR("SendActivateMessage New\n");
+                 co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, TRUE, 
(LPARAM)OldTID);
+               }
+            }
+         }
+         ExFreePoolWithTag(List, USERTAG_WINDOWLIST);
+      }
+   }
+
+   if (Window)
+   {
       if (WindowPrev)
          UserDerefObjectCo(WindowPrev); // Now allow the previous window to 
die.
 
@@ -533,7 +541,7 @@
 
    for(Child = Root->spwndChild; Child; Child = Child->spwndNext)
    {
-       OwnerWnd = Child->spwndOwner;
+      OwnerWnd = Child->spwndOwner;
       if(!OwnerWnd)
          continue;
 


Reply via email to