Fix 'mono' package typo
[mono.git] / bockbuild / mac-sdk / patches / gtk / 0072-let-global-keyboard-shortcuts-pass-through.patch
1 diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
2 index a034bbd..e81ea4d 100644
3 --- a/gdk/quartz/gdkkeys-quartz.c
4 +++ b/gdk/quartz/gdkkeys-quartz.c
5 @@ -812,9 +812,41 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap       *keymap,
6  GdkEventType
7  _gdk_quartz_keys_event_type (NSEvent *event)
8  {
9 -  unsigned short keycode;
10 -  unsigned int flags;
11 +  unsigned short keycode = [event keyCode];
12 +  unsigned int flags = [event modifierFlags];
13 +  CFArrayRef global_keys = NULL;
14 +  unsigned int eventmods = (flags & NSCommandKeyMask ? cmdKey : 0) |
15 +                           (flags & NSAlternateKeyMask ? optionKey : 0) |
16 +                           (flags & NSControlKeyMask ? controlKey : 0) |
17 +                           (flags & NSShiftKeyMask ? shiftKey : 0);
18    int i;
19 +
20 +  if (CopySymbolicHotKeys (&global_keys) == noErr && global_keys != NULL)
21 +    {
22 +      CFIndex length = CFArrayGetCount (global_keys);
23 +
24 +      for (i = 0; i < length; i++)
25 +       {
26 +         CFDictionaryRef key_info = CFArrayGetValueAtIndex (global_keys, i);
27 +
28 +         CFNumberRef code = CFDictionaryGetValue (key_info, kHISymbolicHotKeyCode);
29 +         CFNumberRef mods = CFDictionaryGetValue (key_info, kHISymbolicHotKeyModifiers);
30 +         CFBooleanRef enabled = CFDictionaryGetValue (key_info, kHISymbolicHotKeyEnabled);
31 +
32 +         gint32 mod_value;
33 +         gushort tmp_keycode;
34 +
35 +         CFNumberGetValue (mods, kCFNumberSInt32Type, &mod_value);
36 +         CFNumberGetValue (code, kCFNumberShortType, &tmp_keycode);
37 +
38 +         if (CFBooleanGetValue (enabled) && keycode == tmp_keycode && mod_value == eventmods)
39 +           {
40 +             return GDK_NOTHING;
41 +           }
42 +       }
43 +    }
44 +
45 +    CFRelease (global_keys);
46
47    switch ([event type])
48      {
49 @@ -830,9 +862,6 @@ _gdk_quartz_keys_event_type (NSEvent *event)
50
51    /* For flags-changed events, we have to find the special key that caused the
52     * event, and see if it's in the modifier mask. */
53 -  keycode = [event keyCode];
54 -  flags = [event modifierFlags];
55 -
56    for (i = 0; i < G_N_ELEMENTS (modifier_keys); i++)
57      {
58        if (modifier_keys[i].keycode == keycode)