From c3d15b50b498620b87951d6e89035bc4271ac38f Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Wed, 30 Jul 2014 11:06:58 +0200 Subject: cocoa: fix key equivalent dispatching Prior to this commit we had a list of key modifiers and checked against that. Actually, the Cocoa framework has a built in way to do it and it involves calling performKeyEquivalent: on the menu instance. Fixes #946 cc @mpv-player/stable: this should apply with no conflicts --- osdep/macosx_application.m | 7 ++++++- osdep/macosx_events.m | 22 +--------------------- 2 files changed, 7 insertions(+), 22 deletions(-) (limited to 'osdep') diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m index 6c7748080c..047dfeab65 100644 --- a/osdep/macosx_application.m +++ b/osdep/macosx_application.m @@ -86,7 +86,12 @@ Application *mpv_shared_app(void) [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSKeyUpMask handler:^(NSEvent *event) { - return [self.eventsResponder handleKey:event]; + BOOL equivalent = [[NSApp mainMenu] performKeyEquivalent:event]; + if (equivalent) { + return (NSEvent *)nil; + } else { + return [self.eventsResponder handleKey:event]; + } }]; NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager]; diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m index 56f1bd5397..6a21e96bef 100644 --- a/osdep/macosx_events.m +++ b/osdep/macosx_events.m @@ -233,21 +233,6 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) }); } -- (NSArray *) keyEquivalents -{ - return @[@"h", @"q", @"Q", @"0", @"1", @"2"]; -} - -- (BOOL)isAppKeyEquivalent:(NSString *)eq withEvent:(NSEvent *)event -{ - if ([event modifierFlags] & NSCommandKeyMask) - for(NSString *c in [self keyEquivalents]) - if ([eq isEqualToString:c]) - return YES; - - return NO; -} - - (BOOL)handleMediaKey:(NSEvent *)event { NSDictionary *keymapd = @{ @@ -349,13 +334,8 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) int key = convert_key([event keyCode], *[chars UTF8String]); - if (key > -1) { - if ([self isAppKeyEquivalent:chars withEvent:event]) - // propagate the event in case this is a menu key equivalent - return event; - + if (key > -1) [self handleMPKey:key withMask:[self keyModifierMask:event]]; - } return nil; } -- cgit v1.2.3