[gtk+/wip/matthiasc/kill-key-events2: 8/10] inspector: Stop using ::key-press-event



commit fbe793865a786b64c9c7cd5fc89a3bdb68ff90e2
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Feb 4 09:29:44 2018 +0100

    inspector: Stop using ::key-press-event

 gtk/inspector/object-tree.c   |   30 ++++++++++++++++++------------
 gtk/inspector/prop-list.c     |   26 +++++++++++++++++++-------
 gtk/inspector/resource-list.c |   29 +++++++++++++++++------------
 3 files changed, 54 insertions(+), 31 deletions(-)
---
diff --git a/gtk/inspector/object-tree.c b/gtk/inspector/object-tree.c
index d4a491d..f0cade1 100644
--- a/gtk/inspector/object-tree.c
+++ b/gtk/inspector/object-tree.c
@@ -48,6 +48,7 @@
 #include "gtkstylecontext.h"
 #include "gtksearchbar.h"
 #include "gtksearchentry.h"
+#include "gtkeventcontrollerkey.h"
 #include "treewalk.h"
 
 enum
@@ -700,15 +701,13 @@ move_search_to_row (GtkInspectorObjectTree *wt,
 }
 
 static gboolean
-key_press_event (GtkWidget              *window,
-                 GdkEvent               *event,
-                 GtkInspectorObjectTree *wt)
+key_pressed (GtkEventController     *controller,
+             guint                   keyval,
+             guint                   keycode,
+             GdkModifierType         state,
+             GtkInspectorObjectTree *wt)
 {
-  guint keyval, state;
-
-  if (gtk_widget_get_mapped (GTK_WIDGET (wt)) &&
-      gdk_event_get_keyval (event, &keyval) &&
-      gdk_event_get_state (event, &state))
+  if (gtk_widget_get_mapped (GTK_WIDGET (wt)))
     {
       GdkModifierType default_accel;
       gboolean search_started;
@@ -772,7 +771,8 @@ key_press_event (GtkWidget              *window,
           return GDK_EVENT_STOP;
         }
 
-      return gtk_search_bar_handle_event (GTK_SEARCH_BAR (wt->priv->search_bar), event);
+      return gtk_search_bar_handle_event (GTK_SEARCH_BAR (wt->priv->search_bar),
+                                          gtk_get_current_event ());
     }
   else
     return GDK_EVENT_PROPAGATE;
@@ -782,10 +782,16 @@ static void
 on_hierarchy_changed (GtkWidget *widget,
                       GtkWidget *previous_toplevel)
 {
+  GtkEventController *controller;
+  GtkWidget *toplevel;
+
   if (previous_toplevel)
-    g_signal_handlers_disconnect_by_func (previous_toplevel, key_press_event, widget);
-  g_signal_connect (gtk_widget_get_toplevel (widget), "key-press-event",
-                    G_CALLBACK (key_press_event), widget);
+    g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  controller = gtk_event_controller_key_new (toplevel);
+  g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
 }
 
 static void
diff --git a/gtk/inspector/prop-list.c b/gtk/inspector/prop-list.c
index ff108d7..d88df3e 100644
--- a/gtk/inspector/prop-list.c
+++ b/gtk/inspector/prop-list.c
@@ -35,7 +35,9 @@
 #include "gtkpopover.h"
 #include "gtksearchentry.h"
 #include "gtklabel.h"
+#include "gtkmain.h"
 #include "gtkstack.h"
+#include "gtkeventcontrollerkey.h"
 
 enum
 {
@@ -82,18 +84,22 @@ search_close_clicked (GtkWidget            *button,
 }
 
 static gboolean
-key_press_event (GtkWidget            *window,
-                 GdkEvent             *event,
-                 GtkInspectorPropList *pl)
+key_pressed (GtkEventController   *controller,
+             guint                 keyval,
+             guint                 keycode,
+             GdkModifierType       state,
+             GtkInspectorPropList *pl)
 {
   if (!gtk_widget_get_mapped (GTK_WIDGET (pl)))
     return GDK_EVENT_PROPAGATE;
 
-  if (gtk_search_entry_handle_event (GTK_SEARCH_ENTRY (pl->priv->search_entry), event))
+  if (gtk_search_entry_handle_event (GTK_SEARCH_ENTRY (pl->priv->search_entry),
+                                     gtk_get_current_event ()))
     {
       gtk_stack_set_visible_child (GTK_STACK (pl->priv->search_stack), pl->priv->search_entry);
       return GDK_EVENT_STOP;
     }
+
   return GDK_EVENT_PROPAGATE;
 }
 
@@ -101,10 +107,16 @@ static void
 hierarchy_changed (GtkWidget *widget,
                    GtkWidget *previous_toplevel)
 {
+  GtkEventController *controller;
+  GtkWidget *toplevel;
+
   if (previous_toplevel)
-    g_signal_handlers_disconnect_by_func (previous_toplevel, key_press_event, widget);
-  g_signal_connect (gtk_widget_get_toplevel (widget), "key-press-event",
-                    G_CALLBACK (key_press_event), widget);
+    g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  controller = gtk_event_controller_key_new (toplevel);
+  g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
 }
 
 static void
diff --git a/gtk/inspector/resource-list.c b/gtk/inspector/resource-list.c
index 7c72a70..0e9b52f 100644
--- a/gtk/inspector/resource-list.c
+++ b/gtk/inspector/resource-list.c
@@ -391,15 +391,13 @@ move_search_to_row (GtkInspectorResourceList *sl,
 }
 
 static gboolean
-key_press_event (GtkWidget                *window,
-                 GdkEvent                 *event,
-                 GtkInspectorResourceList *sl)
+key_pressed (GtkEventController       *controller,
+             guint                     keyval,
+             guint                     keycode,
+             GdkModifierType           state,
+             GtkInspectorResourceList *sl)
 {
-  guint keyval, state;
-
-  if (gtk_widget_get_mapped (GTK_WIDGET (sl)) &&
-      gdk_event_get_keyval (event, &keyval) &&
-      gdk_event_get_state (event, &state))
+  if (gtk_widget_get_mapped (GTK_WIDGET (sl)))
     {
       GdkModifierType default_accel;
       gboolean search_started;
@@ -463,7 +461,8 @@ key_press_event (GtkWidget                *window,
           return GDK_EVENT_STOP;
         }
 
-      return gtk_search_bar_handle_event (GTK_SEARCH_BAR (sl->priv->search_bar), event);
+      return gtk_search_bar_handle_event (GTK_SEARCH_BAR (sl->priv->search_bar),
+                                          gtk_get_current_event ());
     }
   else
     return GDK_EVENT_PROPAGATE;
@@ -473,10 +472,16 @@ static void
 on_hierarchy_changed (GtkWidget *widget,
                       GtkWidget *previous_toplevel)
 {
+  GtkEventController *controller;
+  GtkWidget *toplevel;
+
   if (previous_toplevel)
-    g_signal_handlers_disconnect_by_func (previous_toplevel, key_press_event, widget);
-  g_signal_connect (gtk_widget_get_toplevel (widget), "key-press-event",
-                    G_CALLBACK (key_press_event), widget);
+    g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  controller = gtk_event_controller_key_new (toplevel);
+  g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
 }
 
 static void


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