http://bugs.winehq.org/show_bug.cgi?id=19505
--- Comment #2 from Rein Klazes wijn@online.nl 2009-07-30 05:40:20 --- (In reply to comment #1)
XP. The next issue that the application runs into seems to be an issue with menu handling. Prior to the latest crash, the relay log shows:
0009:Call user32.GetSubMenu(000000a0,00000003) ret=00415bd0 0009:Ret user32.GetSubMenu() retval=00000000 ret=00415bd0
I've attached a +menu,+relay,+seh,+tid trace.
It is a problem with mdi menus. The app apparently does not like that the system inserts a system menu as the first item of a mdi-child menu.
With some happy hacking:
diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c index 7e017b0..ac9a339 100644 --- a/dlls/user32/mdi.c +++ b/dlls/user32/mdi.c @@ -896,7 +896,7 @@ static BOOL MDI_AugmentFrameMenu( HWND frame, HWND hChild ) hSysMenuBitmap = hBitmap; } } - +#if 0 if( !InsertMenuA(menu,0,MF_BYPOSITION | MF_BITMAP | MF_POPUP, (UINT_PTR)hSysPopup, (LPSTR)hSysMenuBitmap)) { @@ -904,6 +904,7 @@ static BOOL MDI_AugmentFrameMenu( HWND frame, HWND hChild ) DestroyMenu(hSysPopup); return 0; } +#endif
EnableMenuItem(hSysPopup, SC_SIZE, MF_BYCOMMAND | MF_GRAYED); EnableMenuItem(hSysPopup, SC_MOVE, MF_BYCOMMAND | MF_GRAYED); @@ -944,6 +945,7 @@ static BOOL MDI_RestoreFrameMenu( HWND frame, HWND hChild ) menuInfo.cbSize = sizeof(menuInfo); menuInfo.fMask = MIIM_DATA | MIIM_TYPE;
+#if 0 GetMenuItemInfoW(menu, 0, TRUE, @@ -957,6 +959,7 @@ static BOOL MDI_RestoreFrameMenu( HWND frame, HWND hChild ) { DeleteObject(HBITMAP_32(LOWORD(menuInfo.dwTypeData))); } +#endif
/* close */ DeleteMenu(menu, SC_CLOSE, MF_BYCOMMAND);
the app proceeds much further, and crashes in quartz. Back trace in a moment.