Fix Switch-To keyboard shortcuts cannot be used in context menu

Fix #943, close #9436
This commit is contained in:
Udo Hoffmann 2021-01-21 22:56:39 +01:00 committed by Don HO
parent ca1bcb1ec0
commit fed1803c78
No known key found for this signature in database
GPG Key ID: 6C429F1D8D84F46E

View File

@ -112,15 +112,18 @@ void ContextMenu::create(HWND hParent, const std::vector<MenuItemUnit> & menuIte
{ {
lastIsSep = true; lastIsSep = true;
} }
if (mainMenuHandle) if (mainMenuHandle)
{ {
bool isEnabled = (::GetMenuState(mainMenuHandle, item._cmdID, MF_BYCOMMAND)&(MF_DISABLED|MF_GRAYED)) == 0; UINT s = ::GetMenuState(mainMenuHandle, item._cmdID, MF_BYCOMMAND);
bool isChecked = (::GetMenuState(mainMenuHandle, item._cmdID, MF_BYCOMMAND)&(MF_CHECKED)) != 0; if (s != -1)
if (!isEnabled) {
enableItem(item._cmdID, isEnabled); bool isEnabled = (s & (MF_DISABLED | MF_GRAYED)) == 0;
if (isChecked) bool isChecked = (s & (MF_CHECKED)) != 0;
checkItem(item._cmdID, isChecked); if (!isEnabled)
enableItem(item._cmdID, isEnabled);
if (isChecked)
checkItem(item._cmdID, isChecked);
}
// set up any menu item bitmaps in the context menu, using main menu bitmaps // set up any menu item bitmaps in the context menu, using main menu bitmaps
memset(&mii, 0, sizeof(mii)); memset(&mii, 0, sizeof(mii));