//updates commands and populates arrays and dynamic menus static CarbonEventHandlerStatus HandleMenuOpening(IntPtr callRef, IntPtr eventRef, IntPtr user_data) { DestroyOldMenuObjects(); menuOpenDepth++; try { IntPtr menuRef = Carbon.GetEventParameter(eventRef, CarbonEventParameterName.DirectObject, CarbonEventParameterType.MenuRef); //don't update dynamic menus recursively if (!mainMenus.Contains(menuRef) && menuRef != appMenu) { return(CarbonEventHandlerStatus.NotHandled); } // uint cmd = HIToolbox.GetMenuItemCommandID (new HIMenuItem (menuRef, 0)); CommandTargetRoute route = new CommandTargetRoute(); ushort count = HIToolbox.CountMenuItems(menuRef); for (ushort i = 1; i <= count; i++) { HIMenuItem mi = new HIMenuItem(menuRef, i); uint macCmdID = HIToolbox.GetMenuItemCommandID(mi); object cmdID; //link items if (macCmdID == linkCommandId) { if (IsGloballyDisabled) { HIToolbox.DisableMenuItem(mi); } else { HIToolbox.EnableMenuItem(mi); } continue; } //items that map to command objects if (!commands.TryGetValue(macCmdID, out cmdID) || cmdID == null) { continue; } CommandInfo cinfo = manager.GetCommandInfo(cmdID, route); menuIdMap[cmdID] = HIToolbox.GetMenuID(menuRef); UpdateMenuItem(menuRef, menuRef, ref i, ref count, macCmdID, cinfo); } } catch (Exception ex) { System.Console.WriteLine(ex); } return(CarbonEventHandlerStatus.NotHandled); }
static CarbonHICommand GetCarbonHICommand(IntPtr eventRef) { return(Carbon.GetEventParameter <CarbonHICommand> (eventRef, CarbonEventParameterName.DirectObject, CarbonEventParameterType.HICommand)); }