diff options
author | Ernestas Kulik <ernestask@gnome.org> | 2018-08-10 20:16:14 +0300 |
---|---|---|
committer | Ernestas Kulik <ekulik@redhat.com> | 2019-06-29 14:33:41 +0200 |
commit | e26b641b71d5ea5857266f28411573fc21c6cf21 (patch) | |
tree | 72c2a11a4b25548508068b8b1605be9d6c654141 | |
parent | 4e0ec1555d6ba882002bdef18f0d2c26de6a68d3 (diff) | |
download | nautilus-e26b641b71d5ea5857266f28411573fc21c6cf21.tar.gz |
files-view: Replace GtkWidget::event handler with key controller
-rw-r--r-- | src/nautilus-files-view.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 3ac4ede0b..7be255da0 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -9105,27 +9105,21 @@ on_parent_changed (GObject *object, } static gboolean -nautilus_files_view_event (GtkWidget *widget, - GdkEvent *event) +nautilus_files_view_key_pressed (GtkEventControllerKey *controller, + unsigned int keyval, + unsigned int keycode, + GdkModifierType state, + gpointer user_data) { + GtkWidget *widget; NautilusFilesView *view; NautilusFilesViewPrivate *priv; - guint keyval; - - if (gdk_event_get_event_type (event) != GDK_KEY_PRESS) - { - return GDK_EVENT_PROPAGATE; - } + widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (controller)); view = NAUTILUS_FILES_VIEW (widget); priv = nautilus_files_view_get_instance_private (view); - if (G_UNLIKELY (!gdk_event_get_keyval (event, &keyval))) - { - g_return_val_if_reached (GDK_EVENT_PROPAGATE); - } - - for (gint i = 0; i < G_N_ELEMENTS (extra_view_keybindings); i++) + for (size_t i = 0; i < G_N_ELEMENTS (extra_view_keybindings); i++) { if (extra_view_keybindings[i].keyval == keyval) { @@ -9301,7 +9295,6 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass) oclass->set_property = nautilus_files_view_set_property; widget_class->destroy = nautilus_files_view_destroy; - widget_class->event = nautilus_files_view_event; widget_class->grab_focus = nautilus_files_view_grab_focus; @@ -9505,6 +9498,14 @@ nautilus_files_view_init (NautilusFilesView *view) G_CALLBACK (on_event_controller_scroll_scroll), view); + controller = gtk_event_controller_key_new (); + + gtk_widget_add_controller (GTK_WIDGET (view), controller); + + g_signal_connect (controller, "key-pressed", + G_CALLBACK (nautilus_files_view_key_pressed), NULL); + gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE); + g_signal_connect_swapped (priv->scrolled_window, "popup-menu", G_CALLBACK (popup_menu_callback), |