Updating branch refs/heads/xfce-4.10 to 9acd5517605cddfa3484b83b8fb119d9c8a032a5 (commit) from 8cf0074f0a8ee650fd675d921ac3a298cde1aa39 (commit)
commit 9acd5517605cddfa3484b83b8fb119d9c8a032a5 Author: Jérôme Guelfucci <jero...@xfce.org> Date: Tue Dec 18 08:21:03 2012 +0100 Improve key comparison. Remove horrible hardcoded hack and use the recommanded way of comparison described in the GDK documentation instead. libxfce4kbd-private/xfce-shortcuts-grabber.c | 27 ++++--------------------- 1 files changed, 5 insertions(+), 22 deletions(-) diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c index 9faec07..120cc03 100644 --- a/libxfce4kbd-private/xfce-shortcuts-grabber.c +++ b/libxfce4kbd-private/xfce-shortcuts-grabber.c @@ -429,6 +429,7 @@ struct EventKeyFindContext { XfceShortcutsGrabber *grabber; GdkModifierType modifiers; + GdkModifierType consumed; guint keyval; const gchar *result; }; @@ -440,30 +441,13 @@ find_event_key (const gchar *shortcut, XfceKey *key, struct EventKeyFindContext *context) { - GdkModifierType ignored; - g_return_val_if_fail (context != NULL, FALSE); TRACE ("Comparing to %s", shortcut); - ignored = 0; - - /* Accept MOD1 + META as MOD1 */ - if (key->modifiers & context->modifiers & GDK_MOD1_MASK) - { - TRACE ("Ignoring Meta Mask"); - ignored |= GDK_META_MASK; - } - - /* Accept SUPER + HYPER as SUPER */ - if (key->modifiers & context->modifiers & GDK_SUPER_MASK) - { - TRACE ("Ignoring Hyper Mask"); - ignored |= GDK_HYPER_MASK; - } - - if ((key->modifiers & ~ignored) == (context->modifiers & ~ignored) - && key->keyval == context->keyval) + if ((key->modifiers & ~context->consumed & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK)) + == (context->modifiers) + && (key->keyval == context->keyval)) { context->result = shortcut; @@ -511,13 +495,12 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, XkbGroupForCoreState (xevent->xkey.state), &keyval, NULL, NULL, &consumed); - /* Get the modifiers */ modifiers &= ~consumed; - gdk_keymap_add_virtual_modifiers (keymap, &modifiers); modifiers &= mod_mask; context.keyval = keyval; context.modifiers = modifiers; + context.consumed = consumed; raw_shortcut_name = gtk_accelerator_name (keyval, modifiers); TRACE ("Looking for %s", raw_shortcut_name); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits