[NTUSER]
[reactos.git] / win32ss / user / ntuser / menu.c
index 37c7a44..93108bf 100644 (file)
@@ -653,6 +653,7 @@ IntGetMenuItemInfo(PMENU_OBJECT Menu, /* UNUSED PARAM!! */
 BOOL FASTCALL
 IntSetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, PROSMENUITEMINFO lpmii)
 {
 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)
    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;
    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) ||
    }
 
    if ((lpmii->fMask & MIIM_STRING) ||