From a8919a7a3bd8180a1e188ef91fa776ffc0072238 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Thu, 6 Mar 2014 03:04:50 +0000 Subject: [PATCH] [NTUSER] * 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 | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) || -- 2.17.1