user32: Restore erroneously removed chunk of code

Dmitry Timoshkov dmitry at codeweavers.com
Thu Mar 15 11:41:01 CDT 2007


"Dmitry Timoshkov" <dmitry at codeweavers.com> wrote:

> > This breaks the tests:
> >
> > ../../../tools/runtest -q -P wine -M user32.dll -T ../../.. -p user32_test.exe.so msg.c && touch msg.ok
> > msg.c:2836: Test failed: ShowWindow(SW_RESTORE):invisible MDI child: the msg sequence is not complete: expected 0046 - actual 0000
> > msg.c:2866: Test failed: ShowWindow(SW_RESTORE):maximized MDI child: the msg sequence is not complete: expected 0046 - actual 0000
>
> Hmm, looks like it triggers a bug somewhere else. I've added a workaround
> for now, I will investigate the real cause of the test failure later.

Sorry for the mess, after analyzing message logs once again here is what
I believe is a true fix.

Changelog:
    user32: Restore erroneously removed chunk of code.

---
 dlls/user32/mdi.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c
index de43ae3..8da2060 100644
--- a/dlls/user32/mdi.c
+++ b/dlls/user32/mdi.c
@@ -910,11 +910,19 @@ static BOOL MDI_RestoreFrameMenu( HWND frame, HWND hChild )
 {
     MENUITEMINFOW menuInfo;
     HMENU menu = GetMenu( frame );
+    INT nItems;
+    UINT iId;
 
     TRACE("frame %p, child %p\n", frame, hChild);
 
     if( !menu ) return 0;
 
+    /* if there is no system buttons then nothing to do */
+    nItems = GetMenuItemCount(menu) - 1;
+    iId = GetMenuItemID(menu, nItems);
+    if ( !(iId == SC_RESTORE || iId == SC_CLOSE) )
+        return 0;
+
     /*
      * Remove the system menu, If that menu is the icon of the window
      * as it is in win95, we have to delete the bitmap.
@@ -1531,7 +1539,7 @@ LRESULT WINAPI DefMDIChildProcW( HWND hwnd, UINT message,
 
             frame = GetParent(client);
             MDI_RestoreFrameMenu( frame, hwnd );
-            MDI_UpdateFrameText( frame, client, FALSE, NULL );
+            MDI_UpdateFrameText( frame, client, TRUE, NULL );
         }
 
         if( wParam == SIZE_MAXIMIZED )
-- 
1.5.0.2






More information about the wine-patches mailing list