summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@freedesktop.org>2008-08-26 19:13:56 -0700
committerJeremy Huddleston <jeremyhu@freedesktop.org>2008-08-26 20:19:47 -0700
commit3350770bd6d90fefa1133ac738c1d4eae2d568a6 (patch)
treeccb4363709d62283425d5d795720a975dc9dc280 /hw
parent7930ea9116f232a3762f0085e5ca65e06d1142fc (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.m46
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;