diff options
author | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-08-26 19:13:56 -0700 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-08-26 20:19:47 -0700 |
commit | 3350770bd6d90fefa1133ac738c1d4eae2d568a6 (patch) | |
tree | ccb4363709d62283425d5d795720a975dc9dc280 /hw | |
parent | 7930ea9116f232a3762f0085e5ca65e06d1142fc (diff) |
XQuartz: Use new Xplugin API to determine if a keypress event corresponds to an OS-X hotkey that we should dispatch to Appkit.
(cherry picked from commit e7658e745f8a3eaf5cec9f54a8a1b7e5a7708e09)
Diffstat (limited to 'hw')
-rw-r--r-- | hw/xquartz/X11Application.m | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index 135fac3d1..707a67fdb 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -47,6 +47,8 @@ #include <mach/mach.h> #include <unistd.h> +#include <Xplugin.h> + #define DEFAULTS_FILE "/usr/X11/lib/X11/xserver/Xquartz.plist" #ifndef XSERVER_VERSION @@ -222,34 +224,40 @@ static void message_kit_thread (SEL selector, NSObject *arg) { break; case NSKeyDown: case NSKeyUp: - if(darwinAppKitModMask & [e modifierFlags]) { - /* Override to force sending to Appkit */ - for_x = NO; - } else if (_x_active) { + + if(_x_active) { static int swallow_up; - /* No kit window is focused, so send it to X. */ - for_appkit = NO; - if ([e type] == NSKeyDown) { + if([e type] == NSKeyDown) { /* Before that though, see if there are any global shortcuts bound to it. */ - - if (X11EnableKeyEquivalents - && [[self mainMenu] performKeyEquivalent:e]) { + + if(darwinAppKitModMask & [e modifierFlags]) { + /* Override to force sending to Appkit */ swallow_up = [e keyCode]; for_x = NO; - } else if (!quartzEnableRootless - && ([e modifierFlags] & ALL_KEY_MASKS) - == (NSCommandKeyMask | NSAlternateKeyMask) - && ([e keyCode] == 0 /*a*/ - || [e keyCode] == 53 /*Esc*/)) { - swallow_up = 0; +#if 0 + } else if(!quartzEnableRootless + && ([e modifierFlags] & ALL_KEY_MASKS) == (NSCommandKeyMask | NSAlternateKeyMask) + && ([e keyCode] == 0 /*a*/ || [e keyCode] == 53 /*Esc*/)) { + swallow_up = [e keyCode]; for_x = NO; -#ifdef DARWIN_DDX_MISSING DarwinSendDDXEvent(kXquartzToggleFullscreen, 0); #endif + } else if(X11EnableKeyEquivalents && +#if XPLUGIN_VERSION >= 4 + xp_is_symbolic_hotkey_event([e eventRef])) { +#else + [[self mainMenu] performKeyEquivalent:e]) { + for_appkit = NO; +#endif + swallow_up = [e keyCode]; + for_x = NO; + } else { + /* No kit window is focused, so send it to X. */ + for_appkit = NO; } - } else { + } else { /* KeyUp */ /* If we saw a key equivalent on the down, don't pass the up through to X. */ @@ -258,7 +266,7 @@ static void message_kit_thread (SEL selector, NSObject *arg) { for_x = NO; } } - } else { + } else { /* !_x_active */ for_x = NO; } break; |