eventcontrollerkey: Port to new API model
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 20 Apr 2018 17:58:06 +0000 (19:58 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 26 Apr 2018 15:59:42 +0000 (17:59 +0200)
29 files changed:
demos/gtk-demo/font_features.c
demos/gtk-demo/hypertext.c
demos/icon-browser/iconbrowserwin.c
examples/search-bar.c
gtk/gtkcalendar.c
gtk/gtkcellrendereraccel.c
gtk/gtkcellrendererspin.c
gtk/gtkcoloreditor.c
gtk/gtkcolorplane.c
gtk/gtkcolorswatch.c
gtk/gtkentry.c
gtk/gtkentrycompletion.c
gtk/gtkeventcontrollerkey.c
gtk/gtkeventcontrollerkey.h
gtk/gtkflowbox.c
gtk/gtkiconview.c
gtk/gtkmenu.c
gtk/gtkmenushell.c
gtk/gtkplacessidebar.c
gtk/gtkplacesview.c
gtk/gtkrange.c
gtk/gtksearchbar.c
gtk/gtksearchentry.c
gtk/gtkshortcutswindow.c
gtk/gtktextview.c
gtk/inspector/object-tree.c
gtk/inspector/prop-list.c
gtk/inspector/resource-list.c
gtk/inspector/statistics.c

index 32d801d71f531d84161dedfd47bc3db4e50643ef..5e639576f0b8314a1b310a1e6b0f1d1960bd3ac2 100644 (file)
@@ -1718,9 +1718,10 @@ do_font_features (GtkWidget *do_widget)
       entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry"));
       edit_toggle = GTK_WIDGET (gtk_builder_get_object (builder, "edit_toggle"));
 
-      controller = gtk_event_controller_key_new (entry);
+      controller = gtk_event_controller_key_new ();
       g_object_set_data_full (G_OBJECT (entry), "controller", controller, g_object_unref);
       g_signal_connect (controller, "key-pressed", G_CALLBACK (entry_key_press), entry);
+      gtk_widget_add_controller (entry, controller);
 
       add_check_group (feature_list, _("Kerning"), (const char *[]){ "kern", NULL });
       add_check_group (feature_list, _("Ligatures"), (const char *[]){ "liga",
index 0716b2748dacb9ce661c2731bd6ce02724bb6cf4..d0421cfd4d3ad982c25df52eb7cec274e8fa1294 100644 (file)
@@ -256,9 +256,9 @@ do_hypertext (GtkWidget *do_widget)
       gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
       gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 20);
       gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 20);
-      controller = gtk_event_controller_key_new (view);
-      g_object_set_data_full (G_OBJECT (view), "controller", controller, g_object_unref);
+      controller = gtk_event_controller_key_new ();
       g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), view);
+      gtk_widget_add_controller (view, controller);
       g_signal_connect (view, "event",
                         G_CALLBACK (event_cb), NULL);
 
index 91be68373929a000fb66400b05c4ad07bf1cf8e1..c9ee2e8448cf41f58cd8323ace9d186a9c6e3732 100644 (file)
@@ -54,7 +54,6 @@ struct _IconBrowserWindow
   GtkWidget *image6;
   GtkWidget *label6;
   GtkWidget *description;
-  GtkEventController *controller;
 };
 
 struct _IconBrowserWindowClass
@@ -455,6 +454,7 @@ static void
 icon_browser_window_init (IconBrowserWindow *win)
 {
   GdkContentFormats *list;
+  GtkEventController *controller;
 
   gtk_widget_init_template (GTK_WIDGET (win));
 
@@ -484,8 +484,9 @@ icon_browser_window_init (IconBrowserWindow *win)
 
   symbolic_toggled (GTK_TOGGLE_BUTTON (win->symbolic_radio), win);
 
-  win->controller = gtk_event_controller_key_new (GTK_WIDGET (win));
-  g_signal_connect (win->controller, "key-pressed", G_CALLBACK (key_event_cb), win);
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (key_event_cb), win);
+  gtk_widget_add_controller (GTK_WIDGET (win), controller);
 
   populate (win);
 }
@@ -497,8 +498,6 @@ icon_browser_window_finalize (GObject *object)
 
   g_hash_table_unref (win->contexts);
 
-  g_object_unref (win->controller);
-
   G_OBJECT_CLASS (icon_browser_window_parent_class)->finalize (object);
 }
 
index 2dfeddf4130f4280f995dcb52b71a3ca899d67b0..136354ac8475daec9c680711fbc845752c61f1c5 100644 (file)
@@ -41,10 +41,11 @@ activate_cb (GtkApplication *app,
 
   gtk_search_bar_connect_entry (GTK_SEARCH_BAR (search_bar), GTK_ENTRY (entry));
 
-  controller = gtk_event_controller_key_new (window);
+  controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (window), "controller", controller, g_object_unref);
   g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (window_key_pressed), search_bar);
+  gtk_widget_add_controller (window, controller);
 }
 
 gint
index 3f00c384765bf7b8701ed06e1e4991433d06c59c..906789c2afd6078d8ac72426a63a83da22ec919f 100644 (file)
@@ -248,11 +248,8 @@ struct _GtkCalendarPrivate
   gint detail_height_rows;
   gint detail_width_chars;
   gint detail_overflow[6];
-
-  GtkEventController *key_controller;
 };
 
-static void gtk_calendar_finalize     (GObject     *object);
 static void gtk_calendar_destroy      (GtkWidget    *widget);
 static void gtk_calendar_set_property (GObject      *object,
                                        guint         prop_id,
@@ -369,7 +366,6 @@ gtk_calendar_class_init (GtkCalendarClass *class)
 
   gobject_class->set_property = gtk_calendar_set_property;
   gobject_class->get_property = gtk_calendar_get_property;
-  gobject_class->finalize = gtk_calendar_finalize;
 
   widget_class->destroy = gtk_calendar_destroy;
   widget_class->snapshot = gtk_calendar_snapshot;
@@ -689,17 +685,17 @@ gtk_calendar_init (GtkCalendar *calendar)
                     calendar);
   gtk_widget_add_controller (GTK_WIDGET (calendar), controller);
 
-  priv->key_controller =
-    gtk_event_controller_key_new (GTK_WIDGET (calendar));
-  g_signal_connect (priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_calendar_key_controller_key_pressed),
                     calendar);
-  g_signal_connect (priv->key_controller, "focus-in",
+  g_signal_connect (controller, "focus-in",
                     G_CALLBACK (gtk_calendar_key_controller_focus),
                     calendar);
-  g_signal_connect (priv->key_controller, "focus-out",
+  g_signal_connect (controller, "focus-out",
                     G_CALLBACK (gtk_calendar_key_controller_focus),
                     calendar);
+  gtk_widget_add_controller (GTK_WIDGET (calendar), controller);
 
   if (!default_abbreviated_dayname[0])
     for (i=0; i<7; i++)
@@ -1328,16 +1324,6 @@ calendar_set_month_prev (GtkCalendar *calendar)
  *           Basic object methods       *
  ****************************************/
 
-static void
-gtk_calendar_finalize (GObject *object)
-{
-  GtkCalendarPrivate *priv = GTK_CALENDAR (object)->priv;
-
-  g_object_unref (priv->key_controller);
-
-  G_OBJECT_CLASS (gtk_calendar_parent_class)->finalize (object);
-}
-
 static void
 gtk_calendar_destroy (GtkWidget *widget)
 {
index fd55ea3d07062429da9cc11c76979bf53feaf285..14a669b4319ba64871a642824ec26e2110a7c06f 100644 (file)
@@ -520,7 +520,6 @@ struct _GtkCellEditableWidget
   GtkCellRendererAccelMode accel_mode;
   gchar *path;
   GtkCellRenderer *cell;
-  GtkEventController *key_controller;
 };
 
 enum {
@@ -718,7 +717,6 @@ gtk_cell_editable_widget_finalize (GObject *object)
 {
   GtkCellEditableWidget *box = (GtkCellEditableWidget*)object;
 
-  g_object_unref (box->key_controller);
   g_free (box->path);
 
   G_OBJECT_CLASS (gtk_cell_editable_widget_parent_class)->finalize (object);
@@ -757,14 +755,16 @@ static void
 gtk_cell_editable_widget_init (GtkCellEditableWidget *box)
 {
   GtkWidget *widget = GTK_WIDGET (box);
+  GtkEventController *controller;
 
   gtk_widget_set_can_focus (widget, TRUE);
 
-  box->key_controller = gtk_event_controller_key_new (widget);
-  g_signal_connect (box->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (key_controller_key_pressed), box);
-  g_signal_connect (box->key_controller, "modifiers",
+  g_signal_connect (controller, "modifiers",
                     G_CALLBACK (key_controller_modifiers), box);
+  gtk_widget_add_controller (widget, controller);
 
   gtk_widget_set_has_surface (widget, FALSE);
 }
index 5440019209758311f08bc679bbd59eea4aa341c0..b8cbdfe17935ac80d8e702bd313fb2b82474d6cb 100644 (file)
@@ -91,7 +91,6 @@ enum {
 };
 
 #define GTK_CELL_RENDERER_SPIN_PATH "gtk-cell-renderer-spin-path"
-#define GTK_CELL_RENDERER_SPIN_KEY_CONTROLLER "gtk-cell-renderer-spin-key-controller"
 
 G_DEFINE_TYPE_WITH_PRIVATE (GtkCellRendererSpin, gtk_cell_renderer_spin, GTK_TYPE_CELL_RENDERER_TEXT)
 
@@ -340,13 +339,12 @@ gtk_cell_renderer_spin_start_editing (GtkCellRenderer      *cell,
       g_free (text);
     }
 
-  key_controller = gtk_event_controller_key_new (spin);
+  key_controller = gtk_event_controller_key_new ();
   g_signal_connect (key_controller, "key-pressed",
                     G_CALLBACK (gtk_cell_renderer_spin_key_pressed),
                     spin);
+  gtk_widget_add_controller (spin, key_controller);
 
-  g_object_set_data_full (G_OBJECT (spin), GTK_CELL_RENDERER_SPIN_KEY_CONTROLLER,
-                          key_controller, g_object_unref);
   g_object_set_data_full (G_OBJECT (spin), GTK_CELL_RENDERER_SPIN_PATH,
                          g_strdup (path), g_free);
 
index 34c5a7dd27357d5671c68df9de49680e0d874f0e..8f02600429ded93d792a3f247ab4ff566635c486 100644 (file)
@@ -61,11 +61,6 @@ struct _GtkColorEditorPrivate
   GtkAdjustment *v_adj;
   GtkAdjustment *a_adj;
 
-  GtkEventController *h_key;
-  GtkEventController *s_key;
-  GtkEventController *v_key;
-  GtkEventController *a_key;
-
   gint popup_position;
 
   guint text_changed : 1;
@@ -345,6 +340,8 @@ scaled_adjustment (GtkAdjustment *a,
 static void
 gtk_color_editor_init (GtkColorEditor *editor)
 {
+  GtkEventController *controller;
+
   editor->priv = gtk_color_editor_get_instance_private (editor);
   editor->priv->use_alpha = TRUE;
 
@@ -374,14 +371,18 @@ gtk_color_editor_init (GtkColorEditor *editor)
   gtk_overlay_add_overlay (GTK_OVERLAY (editor->priv->overlay), editor->priv->h_popup);
   gtk_overlay_add_overlay (GTK_OVERLAY (editor->priv->overlay), editor->priv->a_popup);
 
-  editor->priv->h_key = gtk_event_controller_key_new (editor->priv->h_entry);
-  g_signal_connect (editor->priv->h_key, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
-  editor->priv->s_key = gtk_event_controller_key_new (editor->priv->s_entry);
-  g_signal_connect (editor->priv->s_key, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
-  editor->priv->v_key = gtk_event_controller_key_new (editor->priv->v_entry);
-  g_signal_connect (editor->priv->v_key, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
-  editor->priv->a_key = gtk_event_controller_key_new (editor->priv->a_entry);
-  g_signal_connect (editor->priv->a_key, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
+  gtk_widget_add_controller (editor->priv->h_entry, controller);
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
+  gtk_widget_add_controller (editor->priv->s_entry, controller);
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
+  gtk_widget_add_controller (editor->priv->v_entry, controller);
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (popup_key_pressed), editor);
+  gtk_widget_add_controller (editor->priv->a_entry, controller);
 
   gtk_style_context_remove_class (gtk_widget_get_style_context (editor->priv->swatch), "activatable");
 }
@@ -393,11 +394,6 @@ gtk_color_editor_dispose (GObject *object)
 
   dismiss_current_popup (editor);
 
-  g_clear_object (&editor->priv->h_key);
-  g_clear_object (&editor->priv->s_key);
-  g_clear_object (&editor->priv->v_key);
-  g_clear_object (&editor->priv->a_key);
-
   G_OBJECT_CLASS (gtk_color_editor_parent_class)->dispose (object);
 }
 
index 0d2ea83d38cd39204169a95afd5ce5c1652d89ee..e9adcc31f2e1c44a2f09511da43315305e451486 100644 (file)
@@ -36,8 +36,6 @@ struct _GtkColorPlanePrivate
   GtkAdjustment *v_adj;
 
   GdkTexture *texture;
-
-  GtkEventController *key_controller;
 };
 
 enum {
@@ -392,6 +390,7 @@ plane_drag_gesture_end (GtkGestureDrag *gesture,
 static void
 gtk_color_plane_init (GtkColorPlane *plane)
 {
+  GtkEventController *controller;
   GtkGesture *gesture;
   AtkObject *atk_obj;
 
@@ -424,9 +423,10 @@ gtk_color_plane_init (GtkColorPlane *plane)
                                      TRUE);
   gtk_widget_add_controller (GTK_WIDGET (plane), GTK_EVENT_CONTROLLER (gesture));
 
-  plane->priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (plane));
-  g_signal_connect (plane->priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (key_controller_key_pressed), plane);
+  gtk_widget_add_controller (GTK_WIDGET (plane), controller);
 }
 
 static void
@@ -440,8 +440,6 @@ plane_finalize (GObject *object)
   g_clear_object (&plane->priv->s_adj);
   g_clear_object (&plane->priv->v_adj);
 
-  g_clear_object (&plane->priv->key_controller);
-
   G_OBJECT_CLASS (gtk_color_plane_parent_class)->finalize (object);
 }
 
index 7993dab50be6a6912b0e03cd0d7e2d4cc9ecf7a2..747303b9e58724032cb3a5fe80cebc6de124f04e 100644 (file)
@@ -65,7 +65,6 @@ struct _GtkColorSwatchPrivate
   guint    selectable       : 1;
   guint    has_menu         : 1;
 
-  GtkEventController *key_controller;
   GtkWidget *overlay_widget;
 
   GtkWidget *popover;
@@ -502,8 +501,6 @@ swatch_dispose (GObject *object)
       swatch->priv->popover = NULL;
     }
 
-  g_clear_object (&swatch->priv->key_controller);
-
   G_OBJECT_CLASS (gtk_color_swatch_parent_class)->dispose (object);
 }
 
@@ -558,6 +555,7 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
 static void
 gtk_color_swatch_init (GtkColorSwatch *swatch)
 {
+  GtkEventController *controller;
   GtkGesture *gesture;
 
   swatch->priv = gtk_color_swatch_get_instance_private (swatch);
@@ -581,9 +579,10 @@ gtk_color_swatch_init (GtkColorSwatch *swatch)
                     G_CALLBACK (tap_action), swatch);
   gtk_widget_add_controller (GTK_WIDGET (swatch), GTK_EVENT_CONTROLLER (gesture));
 
-  swatch->priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (swatch));
-  g_signal_connect (swatch->priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (key_controller_key_pressed), swatch);
+  gtk_widget_add_controller (GTK_WIDGET (swatch), controller);
 
   gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (swatch)), "activatable");
 
index 84c8f61e4e40a8dfc6cbd96d7cefa6a3fe8eaa2d..9a4a0f75de396c7218cfb3e6591267d716fa493c 100644 (file)
@@ -2578,7 +2578,7 @@ gtk_entry_init (GtkEntry *entry)
                     G_CALLBACK (entry_motion_cb), entry);
   gtk_widget_add_controller (GTK_WIDGET (entry), controller);
 
-  priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (entry));
+  priv->key_controller = gtk_event_controller_key_new ();
   g_signal_connect (priv->key_controller, "key-pressed",
                     G_CALLBACK (gtk_entry_key_controller_key_pressed), entry);
   g_signal_connect_swapped (priv->key_controller, "im-update",
@@ -2589,6 +2589,7 @@ gtk_entry_init (GtkEntry *entry)
                             G_CALLBACK (gtk_entry_focus_out), entry);
   gtk_event_controller_key_set_im_context (GTK_EVENT_CONTROLLER_KEY (priv->key_controller),
                                            priv->im_context);
+  gtk_widget_add_controller (GTK_WIDGET (entry), priv->key_controller);
 
   widget_node = gtk_widget_get_css_node (GTK_WIDGET (entry));
   for (i = 0; i < 2; i++)
index f5b470d645f558cc8a95cbca5eec6d5379c0396a..a47d3cdaa66f908e1e719bc96c435d7a5a0012e4 100644 (file)
@@ -2471,10 +2471,12 @@ maybe_accept_completion (GtkEntry *entry,
 static void
 connect_completion_signals (GtkEntryCompletion *completion)
 {
-  completion->priv->entry_key_controller =
-    gtk_event_controller_key_new (completion->priv->entry);
-  g_signal_connect (completion->priv->entry_key_controller, "key-pressed",
+  GtkEventController *controller;
+
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_entry_completion_key_pressed), completion);
+  gtk_widget_add_controller (completion->priv->entry, controller);
 
   completion->priv->changed_id =
     g_signal_connect (completion->priv->entry, "changed",
@@ -2524,8 +2526,6 @@ unset_accessible_relation (GtkWidget *window,
 static void
 disconnect_completion_signals (GtkEntryCompletion *completion)
 {
-  g_clear_object (&completion->priv->entry_key_controller);
-
   if (completion->priv->changed_id > 0 &&
       g_signal_handler_is_connected (completion->priv->entry,
                                      completion->priv->changed_id))
index 3b2700a5e4f1a90a26284c01a396ebc0aa5990fb..a998a0af8924b529c7573301205feeb2113de571 100644 (file)
@@ -205,12 +205,9 @@ gtk_event_controller_key_init (GtkEventControllerKey *controller)
 }
 
 GtkEventController *
-gtk_event_controller_key_new (GtkWidget *widget)
+gtk_event_controller_key_new (void)
 {
-  g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
   return g_object_new (GTK_TYPE_EVENT_CONTROLLER_KEY,
-                       "widget", widget,
                        NULL);
 }
 
index 414f1fef02c418c40a648ac5acbe30bf35bea92d..c8a579773a44943ec7292c4645bcd407420d28f2 100644 (file)
@@ -44,7 +44,7 @@ GDK_AVAILABLE_IN_ALL
 GType               gtk_event_controller_key_get_type  (void) G_GNUC_CONST;
 
 GDK_AVAILABLE_IN_ALL
-GtkEventController *gtk_event_controller_key_new (GtkWidget *widget);
+GtkEventController *gtk_event_controller_key_new (void);
 
 GDK_AVAILABLE_IN_ALL
 void                gtk_event_controller_key_set_im_context (GtkEventControllerKey *controller,
index f294e4b572b7f5a7cc5f688fea78d287bdac5dce..f9391ec8f8f3f97254046d2e72034bb9514368af 100644 (file)
@@ -666,7 +666,6 @@ struct _GtkFlowBoxPrivate {
   GDestroyNotify     sort_destroy;
 
   GtkGesture        *drag_gesture;
-  GtkEventController *key_controller;
 
   GtkFlowBoxChild   *rubberband_first;
   GtkFlowBoxChild   *rubberband_last;
@@ -3377,8 +3376,6 @@ gtk_flow_box_finalize (GObject *obj)
   g_clear_object (&priv->hadjustment);
   g_clear_object (&priv->vadjustment);
 
-  g_object_unref (priv->key_controller);
-
   if (priv->bound_model)
     {
       if (priv->create_widget_func_data_destroy)
@@ -3724,6 +3721,7 @@ static void
 gtk_flow_box_init (GtkFlowBox *box)
 {
   GtkFlowBoxPrivate *priv = BOX_PRIV (box);
+  GtkEventController *controller;
   GtkGesture *gesture;
 
   gtk_widget_set_has_surface (GTK_WIDGET (box), FALSE);
@@ -3771,9 +3769,10 @@ gtk_flow_box_init (GtkFlowBox *box)
                     G_CALLBACK (gtk_flow_box_drag_gesture_end), box);
   gtk_widget_add_controller (GTK_WIDGET (box), GTK_EVENT_CONTROLLER (priv->drag_gesture));
 
-  priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (box));
-  g_signal_connect (priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_flow_box_key_controller_key_pressed), box);
+  gtk_widget_add_controller (GTK_WIDGET (box), controller);
 }
 
 static void
index 48da13353e2dc7c062f668c83429bfb0f3e73b78..bcd42a02b0a7f633e052d8aca4b3deb0f66346f2 100644 (file)
@@ -974,9 +974,10 @@ gtk_icon_view_init (GtkIconView *icon_view)
                     icon_view);
   gtk_widget_add_controller (GTK_WIDGET (icon_view), controller);
 
-  icon_view->priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (icon_view));
-  g_signal_connect (icon_view->priv->key_controller, "key-pressed", G_CALLBACK (gtk_icon_view_key_pressed),
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (gtk_icon_view_key_pressed),
                     icon_view);
+  gtk_widget_add_controller (GTK_WIDGET (icon_view), controller);
 }
 
 /* GObject methods */
index 602005957e456edcb2e8606f0b471e3411dad297..fec340e3110e1a4d0d50b22c98acd9986cc196ec 100644 (file)
@@ -1150,10 +1150,10 @@ gtk_menu_init (GtkMenu *menu)
   g_signal_connect (controller, "leave", G_CALLBACK (gtk_menu_leave), menu);
   gtk_widget_add_controller (GTK_WIDGET (menu), controller);
 
-  priv->key_controller =
-    gtk_event_controller_key_new (GTK_WIDGET (menu));
-  g_signal_connect (priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_menu_key_pressed), menu);
+  gtk_widget_add_controller (GTK_WIDGET (menu), controller);
 }
 
 static void
@@ -1225,7 +1225,6 @@ gtk_menu_finalize (GObject *object)
 
   gtk_widget_unparent (priv->top_arrow_widget);
   gtk_widget_unparent (priv->bottom_arrow_widget);
-  g_clear_object (&priv->key_controller);
 
   G_OBJECT_CLASS (gtk_menu_parent_class)->finalize (object);
 }
index 69f1568d97d58a6cd1e572ae053388c374ff4d9d..8873345ffa715424fc3f5188485314121c7764f3 100644 (file)
@@ -411,13 +411,15 @@ static void
 gtk_menu_shell_init (GtkMenuShell *menu_shell)
 {
   GtkWidget *widget = GTK_WIDGET (menu_shell);
+  GtkEventController *controller;
 
   menu_shell->priv = gtk_menu_shell_get_instance_private (menu_shell);
   menu_shell->priv->take_focus = TRUE;
 
-  menu_shell->priv->key_controller = gtk_event_controller_key_new (widget);
-  g_signal_connect (menu_shell->priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_menu_shell_key_press), widget);
+  gtk_widget_add_controller (widget, controller);
 
   gtk_widget_set_has_surface (widget, FALSE);
 }
@@ -471,8 +473,6 @@ gtk_menu_shell_finalize (GObject *object)
   if (priv->key_hash)
     _gtk_key_hash_free (priv->key_hash);
 
-  g_object_unref (priv->key_controller);
-
   G_OBJECT_CLASS (gtk_menu_shell_parent_class)->finalize (object);
 }
 
index 3dc112559f482219b9d57374cf451f783a93c689..64e5e3c7206604e47c9ea580bbcfbce8177fc6fd 100644 (file)
@@ -174,8 +174,6 @@ struct _GtkPlacesSidebar {
 
   GActionGroup *action_group;
 
-  GtkEventController *list_box_key_controller;
-
   guint mounting               : 1;
   guint  drag_data_received    : 1;
   guint drop_occurred          : 1;
@@ -4007,6 +4005,7 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
   GdkContentFormats *target_list;
   gboolean show_desktop;
   GtkStyleContext *context;
+  GtkEventController *controller;
   GtkGesture *gesture;
 
   sidebar->cancellable = g_cancellable_new ();
@@ -4046,10 +4045,10 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
   g_signal_connect (sidebar->list_box, "row-activated",
                     G_CALLBACK (on_row_activated), sidebar);
 
-  sidebar->list_box_key_controller =
-    gtk_event_controller_key_new (sidebar->list_box);
-  g_signal_connect (sidebar->list_box_key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (on_key_pressed), sidebar);
+  gtk_widget_add_controller (sidebar->list_box, controller);
 
   gesture = gtk_gesture_long_press_new ();
   gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), TRUE);
@@ -4324,8 +4323,6 @@ gtk_places_sidebar_dispose (GObject *object)
   g_clear_object (&sidebar->current_location);
   g_clear_pointer (&sidebar->rename_uri, g_free);
 
-  g_clear_object (&sidebar->list_box_key_controller);
-
   if (sidebar->source_targets)
     {
       gdk_content_formats_unref (sidebar->source_targets);
index abbf5dd3df9ae2e62238da0edca885ed96154641..fd5968dff0ac371f9d5717535f5ed660e8fc38d1 100644 (file)
@@ -82,7 +82,6 @@ struct _GtkPlacesViewPrivate
 
   GtkEntryCompletion            *address_entry_completion;
   GtkListStore                  *completion_store;
-  GtkEventController            *key_controller;
 
   GCancellable                  *networks_fetching_cancellable;
 
@@ -419,7 +418,6 @@ 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);
 }
@@ -2267,6 +2265,7 @@ static void
 gtk_places_view_init (GtkPlacesView *self)
 {
   GtkPlacesViewPrivate *priv;
+  GtkEventController *controller;
 
   priv = gtk_places_view_get_instance_private (self);
 
@@ -2274,8 +2273,10 @@ 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);
+
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed", G_CALLBACK (on_key_press_event), self);
+  gtk_widget_add_controller (GTK_WIDGET (self), controller);
 
   gtk_widget_init_template (GTK_WIDGET (self));
 }
index 6fc46165ac304a3f378d486973ed071e7d76b55a..058b49968d9a3ef74faccb8fd510cc0e33089676 100644 (file)
@@ -117,7 +117,6 @@ struct _GtkRangePrivate
 
   GtkGesture *multipress_gesture;
   GtkGesture *drag_gesture;
-  GtkEventController *key_controller;
 
   GtkScrollType autoscroll_mode;
   guint autoscroll_id;
@@ -596,10 +595,10 @@ gtk_range_init (GtkRange *range)
                     G_CALLBACK (gtk_range_scroll_controller_scroll), range);
   gtk_widget_add_controller (GTK_WIDGET (range), controller);
 
-  priv->key_controller =
-    gtk_event_controller_key_new (GTK_WIDGET (range));
-  g_signal_connect (priv->key_controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_range_key_controller_key_pressed), range);
+  gtk_widget_add_controller (GTK_WIDGET (range), controller);
 }
 
 /**
@@ -1293,8 +1292,6 @@ gtk_range_finalize (GObject *object)
   GtkRange *range = GTK_RANGE (object);
   GtkRangePrivate *priv = gtk_range_get_instance_private (range);
 
-  g_clear_object (&priv->key_controller);
-
   gtk_widget_unparent (priv->slider_widget);
 
   if (priv->fill_widget)
index 87c105826aaea50eb1d5acfe8832ec99465ec126..8f26e8ecf425bb1fe2000732c3c56743db87455e 100644 (file)
@@ -727,7 +727,8 @@ gtk_search_bar_set_key_capture_widget (GtkSearchBar *bar,
 
   if (priv->capture_widget)
     {
-      g_clear_object (&priv->capture_widget_controller);
+      gtk_widget_remove_controller (priv->capture_widget,
+                                    priv->capture_widget_controller);
       g_object_remove_weak_pointer (G_OBJECT (priv->capture_widget),
                                     (gpointer *) &priv->capture_widget);
     }
@@ -739,13 +740,14 @@ gtk_search_bar_set_key_capture_widget (GtkSearchBar *bar,
       g_object_add_weak_pointer (G_OBJECT (priv->capture_widget),
                                  (gpointer *) &priv->capture_widget);
 
-      priv->capture_widget_controller = gtk_event_controller_key_new (widget);
+      priv->capture_widget_controller = gtk_event_controller_key_new ();
       gtk_event_controller_set_propagation_phase (priv->capture_widget_controller,
                                                   GTK_PHASE_CAPTURE);
       g_signal_connect (priv->capture_widget_controller, "key-pressed",
                         G_CALLBACK (capture_widget_key_handled), bar);
       g_signal_connect (priv->capture_widget_controller, "key-released",
                         G_CALLBACK (capture_widget_key_handled), bar);
+      gtk_widget_add_controller (widget, priv->capture_widget_controller);
     }
 }
 
index cce039c644d7aad04e05cf270b4211e3151323ff..7e50642f1774c525fe6a397fe5f01b8355e49c8d 100644 (file)
@@ -504,7 +504,8 @@ gtk_search_entry_set_key_capture_widget (GtkSearchEntry *entry,
 
   if (priv->capture_widget)
     {
-      g_object_unref (priv->capture_widget_controller);
+      gtk_widget_remove_controller (priv->capture_widget,
+                                    priv->capture_widget_controller);
       g_object_remove_weak_pointer (G_OBJECT (priv->capture_widget),
                                     (gpointer *) &priv->capture_widget);
     }
@@ -516,13 +517,14 @@ gtk_search_entry_set_key_capture_widget (GtkSearchEntry *entry,
       g_object_add_weak_pointer (G_OBJECT (priv->capture_widget),
                                  (gpointer *) &priv->capture_widget);
 
-      priv->capture_widget_controller = gtk_event_controller_key_new (widget);
+      priv->capture_widget_controller = gtk_event_controller_key_new ();
       gtk_event_controller_set_propagation_phase (priv->capture_widget_controller,
                                                   GTK_PHASE_CAPTURE);
       g_signal_connect (priv->capture_widget_controller, "key-pressed",
                         G_CALLBACK (capture_widget_key_handled), entry);
       g_signal_connect (priv->capture_widget_controller, "key-released",
                         G_CALLBACK (capture_widget_key_handled), entry);
+      gtk_widget_add_controller (widget, priv->capture_widget_controller);
     }
 }
 
index 91551946b9a96e7055f4cf8be436de02889fb699..c9b55ef523b0d5d42291bdc1624891d819409bc0 100644 (file)
@@ -115,7 +115,6 @@ typedef struct
   GtkListBox     *list_box;
   GtkBox         *search_gestures;
   GtkBox         *search_shortcuts;
-  GtkEventController *controller;
 
   GtkWindow      *window;
   gulong          keys_changed_id;
@@ -651,7 +650,6 @@ gtk_shortcuts_window_finalize (GObject *object)
 
   g_clear_object (&priv->search_image_group);
   g_clear_object (&priv->search_text_group);
-  g_clear_object (&priv->controller);
 
   G_OBJECT_CLASS (gtk_shortcuts_window_parent_class)->finalize (object);
 }
@@ -882,13 +880,15 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self)
   GtkWidget *label;
   GtkWidget *empty;
   PangoAttrList *attributes;
+  GtkEventController *controller;
 
   gtk_window_set_resizable (GTK_WINDOW (self), FALSE);
   gtk_window_set_type_hint (GTK_WINDOW (self), GDK_SURFACE_TYPE_HINT_DIALOG);
 
-  priv->controller = gtk_event_controller_key_new (GTK_WIDGET (self));
-  g_signal_connect (priv->controller, "key-pressed",
+  controller = gtk_event_controller_key_new ();
+  g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (window_key_pressed), NULL);
+  gtk_widget_add_controller (GTK_WIDGET (self), controller);
 
   priv->keywords = g_hash_table_new_full (NULL, NULL, NULL, g_free);
   priv->search_items_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
index 6644ad21c9072a2511407f761d06604df39bd529..d4a16e3354a2b3bcf8adf46ccf6ee556fce887c0 100644 (file)
@@ -1691,7 +1691,7 @@ gtk_text_view_init (GtkTextView *text_view)
   g_signal_connect (controller, "motion", G_CALLBACK (gtk_text_view_motion), widget);
   gtk_widget_add_controller (widget, controller);
 
-  priv->key_controller = gtk_event_controller_key_new (widget);
+  priv->key_controller = gtk_event_controller_key_new ();
   g_signal_connect (priv->key_controller, "key-pressed",
                     G_CALLBACK (gtk_text_view_key_controller_key_pressed),
                     widget);
@@ -1706,6 +1706,7 @@ gtk_text_view_init (GtkTextView *text_view)
                             widget);
   gtk_event_controller_key_set_im_context (GTK_EVENT_CONTROLLER_KEY (priv->key_controller),
                                            priv->im_context);
+  gtk_widget_add_controller (widget, priv->key_controller);
 
   priv->selection_node = gtk_css_node_new ();
   gtk_css_node_set_name (priv->selection_node, I_("selection"));
@@ -3602,8 +3603,6 @@ gtk_text_view_finalize (GObject *object)
   
   cancel_pending_scroll (text_view);
 
-  g_object_unref (priv->key_controller);
-
   if (priv->tabs)
     pango_tab_array_free (priv->tabs);
   
index 0c04f8ba96b93aa000cfb30225681979da2fbe3b..4e66b6023600aeb664fd4c2ab2b0c744d6457c12 100644 (file)
@@ -801,9 +801,10 @@ on_hierarchy_changed (GtkWidget *widget,
     g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
 
   toplevel = gtk_widget_get_toplevel (widget);
-  controller = gtk_event_controller_key_new (toplevel);
+  controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
+  gtk_widget_add_controller (toplevel, controller);
 
   gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (wt->priv->search_bar),
                                          toplevel);
index d88df3e322aceb071f8d221d729b900ec387fc67..9b851d86ec0d445a7f977d5411c5b29cb7777b0a 100644 (file)
@@ -114,9 +114,10 @@ hierarchy_changed (GtkWidget *widget,
     g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
 
   toplevel = gtk_widget_get_toplevel (widget);
-  controller = gtk_event_controller_key_new (toplevel);
+  controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
+  gtk_widget_add_controller (toplevel, controller);
 }
 
 static void
index 141231f01f22816af203ae7b1fa7b48a7e1d1173..92409e62d744c1c3ed6bca15ff9e541016ed3d22 100644 (file)
@@ -481,9 +481,10 @@ on_hierarchy_changed (GtkWidget *widget,
     g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
 
   toplevel = gtk_widget_get_toplevel (widget);
-  controller = gtk_event_controller_key_new (toplevel);
+  controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
+  gtk_widget_add_controller (toplevel, controller);
 
   gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (sl->priv->search_bar),
                                          toplevel);
index a6c8482652c5a6b0f4a7c8d17183e63659d12ce6..48b812d41d1fba46c48d935bd604937bcf9cb6ca 100644 (file)
@@ -332,9 +332,10 @@ hierarchy_changed (GtkWidget *widget,
     g_object_set_data (G_OBJECT (previous_toplevel), "controller", NULL);
 
   toplevel = gtk_widget_get_toplevel (widget);
-  controller = gtk_event_controller_key_new (toplevel);
+  controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "controller", controller, g_object_unref);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
+  gtk_widget_add_controller (toplevel, controller);
 
   gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (sl->priv->search_bar),
                                          toplevel);