diff options
author | Matthias Clasen <mclasen@redhat.com> | 2018-02-04 21:21:39 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-04-05 19:26:53 +0200 |
commit | 6d1b21a0288437d2c8b50a257ab6f48100e4a6cf (patch) | |
tree | b190ae0736c2de8cbbed5af1e3cf56bea1a935d6 /gtk/gtkplacesview.c | |
parent | c2bd7fcf3520dbce8917d82539db16840f2485ba (diff) | |
download | gtk+-6d1b21a0288437d2c8b50a257ab6f48100e4a6cf.tar.gz |
places view: Stop using ::key-press-event
Diffstat (limited to 'gtk/gtkplacesview.c')
-rw-r--r-- | gtk/gtkplacesview.c | 65 |
1 files changed, 32 insertions, 33 deletions
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c index b652bd0d6f..c4323748ff 100644 --- a/gtk/gtkplacesview.c +++ b/gtk/gtkplacesview.c @@ -28,6 +28,7 @@ #include "gtkplacesviewprivate.h" #include "gtkplacesviewrowprivate.h" #include "gtktypebuiltins.h" +#include "gtkeventcontrollerkey.h" /* * SECTION:gtkplacesview @@ -81,6 +82,7 @@ struct _GtkPlacesViewPrivate GtkEntryCompletion *address_entry_completion; GtkListStore *completion_store; + GtkEventController *key_controller; GCancellable *networks_fetching_cancellable; @@ -414,6 +416,7 @@ gtk_places_view_finalize (GObject *object) g_clear_object (&priv->networks_fetching_cancellable); g_clear_object (&priv->path_size_group); g_clear_object (&priv->space_size_group); + g_clear_object (&priv->key_controller); G_OBJECT_CLASS (gtk_places_view_parent_class)->finalize (object); } @@ -1687,51 +1690,46 @@ on_row_popup_menu (GtkPlacesViewRow *row) } static gboolean -on_key_press_event (GtkWidget *widget, - GdkEventKey *event, - GtkPlacesView *view) +on_key_press_event (GtkEventController *controller, + guint keyval, + guint keycode, + GdkModifierType state, + GtkPlacesView *view) { GtkPlacesViewPrivate *priv; - guint keyval, state; + GdkModifierType modifiers; priv = gtk_places_view_get_instance_private (view); - if (event && - gdk_event_get_keyval ((GdkEvent *) event, &keyval) && - gdk_event_get_state ((GdkEvent *) event, &state)) - { - guint modifiers; - - modifiers = gtk_accelerator_get_default_mod_mask (); + modifiers = gtk_accelerator_get_default_mod_mask (); - if (keyval == GDK_KEY_Return || - keyval == GDK_KEY_KP_Enter || - keyval == GDK_KEY_ISO_Enter || - keyval == GDK_KEY_space) - { - GtkWidget *focus_widget; - GtkWindow *toplevel; + if (keyval == GDK_KEY_Return || + keyval == GDK_KEY_KP_Enter || + keyval == GDK_KEY_ISO_Enter || + keyval == GDK_KEY_space) + { + GtkWidget *focus_widget; + GtkWindow *toplevel; - priv->current_open_flags = GTK_PLACES_OPEN_NORMAL; - toplevel = get_toplevel (GTK_WIDGET (view)); + priv->current_open_flags = GTK_PLACES_OPEN_NORMAL; + toplevel = get_toplevel (GTK_WIDGET (view)); - if (!toplevel) - return FALSE; + if (!toplevel) + return FALSE; - focus_widget = gtk_window_get_focus (toplevel); + focus_widget = gtk_window_get_focus (toplevel); - if (!GTK_IS_PLACES_VIEW_ROW (focus_widget)) - return FALSE; + if (!GTK_IS_PLACES_VIEW_ROW (focus_widget)) + return FALSE; - if ((state & modifiers) == GDK_SHIFT_MASK) - priv->current_open_flags = GTK_PLACES_OPEN_NEW_TAB; - else if ((state & modifiers) == GDK_CONTROL_MASK) - priv->current_open_flags = GTK_PLACES_OPEN_NEW_WINDOW; + if ((state & modifiers) == GDK_SHIFT_MASK) + priv->current_open_flags = GTK_PLACES_OPEN_NEW_TAB; + else if ((state & modifiers) == GDK_CONTROL_MASK) + priv->current_open_flags = GTK_PLACES_OPEN_NEW_WINDOW; - activate_row (view, GTK_PLACES_VIEW_ROW (focus_widget), priv->current_open_flags); + activate_row (view, GTK_PLACES_VIEW_ROW (focus_widget), priv->current_open_flags); - return TRUE; - } + return TRUE; } return FALSE; @@ -2255,7 +2253,6 @@ gtk_places_view_class_init (GtkPlacesViewClass *klass) gtk_widget_class_bind_template_callback (widget_class, on_address_entry_text_changed); gtk_widget_class_bind_template_callback (widget_class, on_address_entry_show_help_pressed); gtk_widget_class_bind_template_callback (widget_class, on_connect_button_clicked); - gtk_widget_class_bind_template_callback (widget_class, on_key_press_event); gtk_widget_class_bind_template_callback (widget_class, on_listbox_row_activated); gtk_widget_class_bind_template_callback (widget_class, on_recent_servers_listbox_row_activated); @@ -2273,6 +2270,8 @@ gtk_places_view_init (GtkPlacesView *self) priv->open_flags = GTK_PLACES_OPEN_NORMAL; priv->path_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); priv->space_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (self)); + g_signal_connect (priv->key_controller, "key-pressed", G_CALLBACK (on_key_press_event), self); gtk_widget_init_template (GTK_WIDGET (self)); } |