diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index ae5cb368edb..f39ae7cddb7 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -3356,6 +3356,9 @@ void MENU_TrackMouseMenuBar( HWND hWnd, INT ht, POINT pt ) if (IsMenu(hMenu)) { MENU_InitTracking( hWnd, hMenu, FALSE, wFlags ); + + /* fetch the window menu again, it may have changed */ + hMenu = (ht == HTSYSMENU) ? get_win_sys_menu( hWnd ) : GetMenu( hWnd ); MENU_TrackMenu( hMenu, wFlags, pt.x, pt.y, hWnd, NULL ); MENU_ExitTracking(hWnd, FALSE); } @@ -3396,6 +3399,9 @@ void MENU_TrackKbdMenuBar( HWND hwnd, UINT wParam, WCHAR wChar) MENU_InitTracking( hwnd, hTrackMenu, FALSE, wFlags ); + /* fetch the window menu again, it may have changed */ + hTrackMenu = (wParam & HTSYSMENU) ? get_win_sys_menu( hwnd ) : GetMenu( hwnd ); + if( wChar && wChar != ' ' ) { uItem = MENU_FindItemByKey( hwnd, hTrackMenu, wChar, (wParam & HTSYSMENU) );