user32: Force switching of maximizing MDI child
authorAnatoly Lyutin <vostok@etersoft.ru>
Tue, 29 Apr 2008 11:45:46 +0000 (15:45 +0400)
committerKonstantin Kondratyuk <kondratyuk@etersoft.ru>
Fri, 2 May 2008 09:34:04 +0000 (13:34 +0400)
dlls/user32/mdi.c

index 60297b069b31f7b95e689631652fba185c7b74b5..e2df9f3a01452ae7ad372249a56eaeb91bccae14 100644 (file)
@@ -528,18 +528,21 @@ static void MDI_SwitchActiveChild( MDICLIENTINFO *ci, HWND hwndTo, BOOL activate
 
         if (was_zoomed)
         {
+            ci->hwndChildMaximized = hwndTo;
+            /* maximize new MDI child */
+            ShowWindow( hwndTo, SW_MAXIMIZE );
+            /* activate new MDI child */
+            SetWindowPos( hwndTo, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE| (activate ? 0 : SWP_NOACTIVATE) );
+
             /* restore old MDI child */
             SendMessageW( hwndPrev, WM_SETREDRAW, FALSE, 0 );
             ShowWindow( hwndPrev, SW_RESTORE );
             SendMessageW( hwndPrev, WM_SETREDRAW, TRUE, 0 );
 
-            /* activate new MDI child */
-            SetWindowPos( hwndTo, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
-            /* maximize new MDI child */
-            ShowWindow( hwndTo, SW_MAXIMIZE );
+            ci->hwndActiveChild = hwndTo;
         }
-        /* activate new MDI child */
-        SetWindowPos( hwndTo, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | (activate ? 0 : SWP_NOACTIVATE) );
+       else
+            SetWindowPos( hwndTo, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | (activate ? 0 : SWP_NOACTIVATE) );
     }
 }