diff --git a/win32ss/user/ntuser/menu.c b/win32ss/user/ntuser/menu.c index 37c7a44cc40..93108bf09d1 100644 --- a/win32ss/user/ntuser/menu.c +++ b/win32ss/user/ntuser/menu.c @@ -653,6 +653,7 @@ IntGetMenuItemInfo(PMENU_OBJECT Menu, /* UNUSED PARAM!! */ BOOL FASTCALL IntSetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, PROSMENUITEMINFO lpmii) { + PMENU_OBJECT SubMenuObject; UINT fTypeMask = (MFT_BITMAP | MFT_MENUBARBREAK | MFT_MENUBREAK | MFT_OWNERDRAW | MFT_RADIOCHECK | MFT_RIGHTJUSTIFY | MFT_SEPARATOR); if(!MenuItem || !MenuObject || !lpmii) @@ -734,6 +735,15 @@ IntSetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, PROSMENUITEMINF if(lpmii->fMask & MIIM_SUBMENU) { MenuItem->hSubMenu = lpmii->hSubMenu; + /* Make sure the submenu is marked as a popup menu */ + if (MenuItem->hSubMenu) + { + SubMenuObject = UserGetMenuObject(MenuItem->hSubMenu); + if (SubMenuObject != NULL) + { + SubMenuObject->MenuInfo.Flags |= MF_POPUP; + } + } } if ((lpmii->fMask & MIIM_STRING) ||