I'd like to create an NSMenu
containing an NSMenuItem
which is hidden by default, and only appears while the user is holding a keyboard modifier key.
Basically, I'm looking for the same behaviour as the 'Library' option in the Finder's 'Go' Menu:
I already tried installing a key listener using [NSEvent addGlobalMonitorForEventsMatchingMask: handler:]
to hide and unhide the NSMenuItem
programmatically by setting it's hidden
property. This kind of worked, but the problem is that the hiding/unhiding wouldn't work while the NSMenu
was open. Apparently an NSMenu
completely takes over the event processing loop while it's open, preventing the key listener from working.
I could probably use a CGEventTap to still receive events while the NSMenu
is open, but that seems like complete overkill.
Another thing I discovered which does a similar thing to what I want is the 'alternate' mechanism of NSMenu
. But I could only get it to switch out NSMenuItems
, not hide/unhide them.
Any help would be greatly appreciated. Thanks!