[gtk+/wip/matthiasc/kill-key-events2: 38/48] places view: Stop using ::key-press-event



commit 734d1f1d3b1afe3c7397be54ac8466c66a87265d
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Feb 4 21:21:39 2018 +0100

    places view: Stop using ::key-press-event

 gtk/gtkplacesview.c     |   65 +++++++++++++++++++++++------------------------
 gtk/ui/gtkplacesview.ui |    1 -
 2 files changed, 32 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c
index b652bd0..c432374 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));
 }
diff --git a/gtk/ui/gtkplacesview.ui b/gtk/ui/gtkplacesview.ui
index 615109f..48db836 100644
--- a/gtk/ui/gtkplacesview.ui
+++ b/gtk/ui/gtkplacesview.ui
@@ -303,7 +303,6 @@
   <template class="GtkPlacesView" parent="GtkBox">
     <property name="can-focus">False</property>
     <property name="orientation">vertical</property>
-    <signal name="key-press-event" handler="on_key_press_event" object="GtkPlacesView" swapped="no"/>
     <child>
       <object class="GtkStack" id="stack">
         <property name="vhomogeneous">0</property>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]