diff --git a/mcs-plugin/xfwm4_shortcuteditor.c b/mcs-plugin/xfwm4_shortcuteditor.c index 0b893c9075d903813e32bee964634577571333a8..f27636a2510a7d0471ff663ba9d1cce8eaaa2ae7 100644 --- a/mcs-plugin/xfwm4_shortcuteditor.c +++ b/mcs-plugin/xfwm4_shortcuteditor.c @@ -48,9 +48,7 @@ struct _shortcut_tree_foreach_struct void cb_popup_del_menu (GtkWidget * widget, gpointer data) { - Itf *itf; - - itf = (Itf *) data; + Itf *itf = (Itf *) data; if (xfce_confirm (_("Do you really want to remove this keybinding theme ?"), GTK_STOCK_YES, NULL)) @@ -112,6 +110,7 @@ cb_popup_del_menu (GtkWidget * widget, gpointer data) void cb_popup_add_menu (GtkWidget * widget, gpointer data) { + Itf *itf = (Itf *) data; gchar buf[80]; GtkWidget *dialog; GtkWidget *hbox; @@ -122,7 +121,6 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; - Itf *itf; ThemeInfo *ti; gchar *new_theme_path = NULL; @@ -133,8 +131,6 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) FILE *new_theme; FILE *default_theme; - itf = (Itf *) data; - dialog = gtk_dialog_new_with_buttons (_("Add keybinding theme"), GTK_WINDOW (itf->xfwm4_dialog), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); @@ -256,9 +252,7 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) gboolean cb_popup_menu (GtkTreeView * treeview, GdkEventButton * event, gpointer data) { - Itf *itf; - - itf = (Itf *) data; + Itf *itf = (Itf *) data; /* Right click draws the context menu */ if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS)) @@ -663,11 +657,13 @@ is_modifier (guint keycode) keymap = XGetModifierMapping (gdk_display); for (n = 0; n < keymap->max_keypermod * 8; ++n) + { if (keycode == keymap->modifiermap[n]) { result = TRUE; break; } + } XFreeModifiermap (keymap); @@ -679,13 +675,13 @@ cb_compose_shortcut (GtkWidget * widget, GdkEventKey * event, gpointer data) { Itf *itf = (Itf *) data; + GdkModifierType consumed_modifiers = 0; gchar shortcut_string[80] = ""; + ThemeInfo *ti; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; shortcut_tree_foreach_struct stfs; - ThemeInfo *ti; - GdkModifierType consumed_modifiers = 0; guint keyval; guint modifiers; gchar *accelerator; @@ -710,8 +706,6 @@ cb_compose_shortcut (GtkWidget * widget, GdkEventKey * event, gpointer data) 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: @@ -721,6 +715,21 @@ cb_compose_shortcut (GtkWidget * widget, GdkEventKey * event, gpointer data) /* Release keyboard */ gdk_keyboard_ungrab (GDK_CURRENT_TIME); + /* + * gtk_accelerator_get_default_mod_mask () limits the number of modifiers. + * Unfortunately, at this timle of writing, gdk doesn't konw about + * META, SUPER or HYPER modifiers, just Shift, Alt and Control... + * + * It Means that ppl won't be able to use the "Windows" key of keyboard + * as a modifier... Too bad, that's life, complain to gtk+ maintainers. + * + * Things may change in the future? See this thread: + * + * http://mail.gnome.org/archives/gtk-devel-list/2005-September/msg00024.html + * + * (Olivier) + */ + modifiers = event->state & (~consumed_modifiers | GDK_MODIFIER_MASK); modifiers = modifiers & gtk_accelerator_get_default_mod_mask (); accelerator = gtk_accelerator_name (keyval, modifiers); @@ -872,7 +881,7 @@ cb_activate_treeview3 (GtkWidget * treeview, GtkTreePath * path, GtkTreeViewColu g_signal_connect (G_OBJECT (dialog), "key-press-event", G_CALLBACK (cb_compose_shortcut), itf); /* Take control on the keyboard */ - if (gdk_keyboard_grab (gtk_widget_get_root_window (label), TRUE, + if (gdk_keyboard_grab (gtk_widget_get_root_window (dialog), TRUE, GDK_CURRENT_TIME) != GDK_GRAB_SUCCESS) { g_warning ("Cannot grab the keyboard");