OK I found the best solution :) Leave the MainMenu in the NIB. It won't be displayed, but all the actions will be handled properly.
> On Sep 28, 2015, at 3:38 PM, Ken Thomases <k...@codeweavers.com> wrote: > > On Sep 28, 2015, at 4:22 PM, Alex Kac <a...@webis.net> wrote: >> >> I guess I need more help than that. Here is what I’ve got: >> >> NSViewController - with a NIB that has a plain NSView, with an NSTextField >> in it. Using an NSPopover, the NSViewController is the content for the >> popover. >> >> My only two classes are the NSApplication delegate, and the >> NSViewController. Neither -keyDown nor -performKeyEquivalent: get called >> there. I’m reading this: >> https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html > > Use a custom view class. You can replace the "plain NSView" in your > description above with a custom subclass of NSView. Or you can use a custom > subclass of NSTextField. Either will work. The search for a view which > handles a key equivalent goes through the entire view hierarchy of a window, > not just the responder chain or anything like that. > > There's a sample implementation here > <http://web.archive.org/web/20100126000339/http://www.cocoarocket.com/articles/copypaste.html>. > That code uses [[self window] firstResponder] as the "to" parameter for > calls to -[NSApplication sendAction:to:from:], but you can just pass nil to > target the first responder. > > The code is also a bit too strict in checking the event's modifierFlags. It > will fail to invoke the edit actions if Caps Lock is down, for example. I > would write that as: > > if ((event.modifierFlags & (NSShiftKeyMask | NSControlKeyMask | > NSAlternateKeyMask | NSCommandKeyMask)) == NSCommandKeyMask) … > > >> From reading there, since I have no NSWindow, and no NSMenu, there is no >> key-view loop or NSApplication has nothing to send me the command key >> equivalents for. > > There is a window for the popover, it's just private to the popover > implementation. There is a key-view loop. If a popover has multiple text > fields, for example, you can tab from one to the next. > >> I’m wondering if perhaps I need to use a global monitor for events while the >> popover is up, and remove it when its dismissed. >> >> I don’t mind handling the events myself and processing them - but beyond >> using a global monitor for events, I’m not sure how to set them up and get >> them in my NSViewController… > > A global event monitor is for events *not* targeted at your application. A > local event monitor is for events targeted at your application. But neither > should be necessary for this purpose. > > Regards, > Ken > Alex Kac - El capitán _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com