From b44e99a72dbdf87438c24b9a9ab5c77d29524d8e Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Sat, 29 Apr 2006 22:12:59 +0000 Subject: [PATCH] Clean-up the modifier mess in shortcut editor, now should be using the same codebase as Terminal. (Old svn revision: 21369) --- mcs-plugin/xfwm4_shortcuteditor.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/mcs-plugin/xfwm4_shortcuteditor.c b/mcs-plugin/xfwm4_shortcuteditor.c index 6d36d929e..0b893c907 100644 --- a/mcs-plugin/xfwm4_shortcuteditor.c +++ b/mcs-plugin/xfwm4_shortcuteditor.c @@ -687,6 +687,7 @@ cb_compose_shortcut (GtkWidget * widget, GdkEventKey * event, gpointer data) ThemeInfo *ti; GdkModifierType consumed_modifiers = 0; guint keyval; + guint modifiers; gchar *accelerator; gint i; gchar **shortcuts; @@ -700,13 +701,29 @@ cb_compose_shortcut (GtkWidget * widget, GdkEventKey * event, gpointer data) keyval = gdk_keyval_to_lower (event->keyval); - if (keyval == GDK_ISO_Left_Tab) - keyval = GDK_Tab; + switch (keyval) + { + case GDK_ISO_Left_Tab: + keyval = GDK_Tab; + break; + case GDK_ISO_Level3_Latch: + case GDK_ISO_Level3_Lock: + case GDK_ISO_Level3_Shift: + case GDK_Scroll_Lock: + case GDK_Super_L: + case GDK_Super_R: + return TRUE; + break; + default: + break; + } /* Release keyboard */ gdk_keyboard_ungrab (GDK_CURRENT_TIME); - accelerator = gtk_accelerator_name (keyval, event->state); + modifiers = event->state & (~consumed_modifiers | GDK_MODIFIER_MASK); + modifiers = modifiers & gtk_accelerator_get_default_mod_mask (); + accelerator = gtk_accelerator_name (keyval, modifiers); for (i = 0; i < strlen (accelerator); i++) { @@ -719,7 +736,7 @@ cb_compose_shortcut (GtkWidget * widget, GdkEventKey * event, gpointer data) current_shortcut = shortcuts; while (*current_shortcut) { - if (strlen (*current_shortcut) > 0 && (strcmp (*current_shortcut, "Mod2") != 0)) + if (strlen (*current_shortcut)) { strcat (shortcut_string, *current_shortcut); strcat (shortcut_string, "+"); -- GitLab