diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index ef7253d123..11cc7c616d 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -121,6 +121,8 @@ #include "gtkcsscolorvalueprivate.h" #include "gtkcssnumbervalueprivate.h" #include "gtksnapshot.h" +#include "gtkshortcut.h" +#include "gtkshortcuttrigger.h" #include "gtkrender.h" #include "gtkstylecontextprivate.h" @@ -1445,37 +1447,41 @@ gtk_popover_remove (GtkContainer *container, } static void -add_tab_bindings (GtkBindingSet *binding_set, +add_tab_bindings (GtkWidgetClass *widget_class, GdkModifierType modifiers, GtkDirectionType direction) { - gtk_binding_entry_add_signal (binding_set, GDK_KEY_Tab, modifiers, - "move-focus", 1, - GTK_TYPE_DIRECTION_TYPE, direction); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Tab, modifiers, - "move-focus", 1, - GTK_TYPE_DIRECTION_TYPE, direction); + gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_Tab, modifiers, + "move-focus", + "(i)", direction); + gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_KP_Tab, modifiers, + "move-focus", + "(i)", direction); } static void -add_arrow_bindings (GtkBindingSet *binding_set, +add_arrow_bindings (GtkWidgetClass *widget_class, guint keysym, GtkDirectionType direction) { guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left; - gtk_binding_entry_add_signal (binding_set, keysym, 0, - "move-focus", 1, - GTK_TYPE_DIRECTION_TYPE, direction); - gtk_binding_entry_add_signal (binding_set, keysym, GDK_CONTROL_MASK, - "move-focus", 1, - GTK_TYPE_DIRECTION_TYPE, direction); - gtk_binding_entry_add_signal (binding_set, keypad_keysym, 0, - "move-focus", 1, - GTK_TYPE_DIRECTION_TYPE, direction); - gtk_binding_entry_add_signal (binding_set, keypad_keysym, GDK_CONTROL_MASK, - "move-focus", 1, - GTK_TYPE_DIRECTION_TYPE, direction); + gtk_widget_class_add_binding_signal (widget_class, keysym, 0, + "move-focus", + "(i)", + direction); + gtk_widget_class_add_binding_signal (widget_class, keysym, GDK_CONTROL_MASK, + "move-focus", + "(i)", + direction); + gtk_widget_class_add_binding_signal (widget_class, keypad_keysym, 0, + "move-focus", + "(i)", + direction); + gtk_widget_class_add_binding_signal (widget_class, keypad_keysym, GDK_CONTROL_MASK, + "move-focus", + "(i)", + direction); } static void @@ -1484,7 +1490,6 @@ gtk_popover_class_init (GtkPopoverClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); - GtkBindingSet *binding_set; object_class->dispose = gtk_popover_dispose; object_class->finalize = gtk_popover_finalize; @@ -1563,24 +1568,22 @@ gtk_popover_class_init (GtkPopoverClass *klass) G_TYPE_NONE, 0); - binding_set = gtk_binding_set_by_class (klass); + add_arrow_bindings (widget_class, GDK_KEY_Up, GTK_DIR_UP); + add_arrow_bindings (widget_class, GDK_KEY_Down, GTK_DIR_DOWN); + add_arrow_bindings (widget_class, GDK_KEY_Left, GTK_DIR_LEFT); + add_arrow_bindings (widget_class, GDK_KEY_Right, GTK_DIR_RIGHT); - add_arrow_bindings (binding_set, GDK_KEY_Up, GTK_DIR_UP); - add_arrow_bindings (binding_set, GDK_KEY_Down, GTK_DIR_DOWN); - add_arrow_bindings (binding_set, GDK_KEY_Left, GTK_DIR_LEFT); - add_arrow_bindings (binding_set, GDK_KEY_Right, GTK_DIR_RIGHT); + add_tab_bindings (widget_class, 0, GTK_DIR_TAB_FORWARD); + add_tab_bindings (widget_class, GDK_CONTROL_MASK, GTK_DIR_TAB_FORWARD); + add_tab_bindings (widget_class, GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD); + add_tab_bindings (widget_class, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD); - add_tab_bindings (binding_set, 0, GTK_DIR_TAB_FORWARD); - add_tab_bindings (binding_set, GDK_CONTROL_MASK, GTK_DIR_TAB_FORWARD); - add_tab_bindings (binding_set, GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD); - add_tab_bindings (binding_set, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD); - - gtk_binding_entry_add_signal (binding_set, GDK_KEY_Return, 0, - "activate-default", 0); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_ISO_Enter, 0, - "activate-default", 0); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Enter, 0, - "activate-default", 0); + gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_Return, 0, + "activate-default", NULL); + gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_ISO_Enter, 0, + "activate-default", NULL); + gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_KP_Enter, 0, + "activate-default", NULL); gtk_widget_class_set_css_name (widget_class, "popover"); }