[NTUSER]
authorDavid Quintana <gigaherz@gmail.com>
Thu, 6 Mar 2014 03:04:50 +0000 (03:04 +0000)
committerDavid Quintana <gigaherz@gmail.com>
Thu, 6 Mar 2014 03:04:50 +0000 (03:04 +0000)
* Revert a change that removed too much. Unbreaks the "New..." menu, and anywhere else that required this, although the code feels like a workaround for a bug elsewhere.

svn path=/branches/shell-experiments/; revision=62436

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)
 {
+   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) ||