diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-04-20 19:58:06 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-04-26 17:59:42 +0200 |
commit | 15e00759c74a6bb72bffe2a6d7f75c83914c11c5 (patch) | |
tree | 793c4a97120e19a9c540aa282fd530ae3ef0c9f2 | |
parent | ba7849960e5e3447884f92b58e899aa5db0f0565 (diff) | |
download | gtk+-15e00759c74a6bb72bffe2a6d7f75c83914c11c5.tar.gz |
eventcontrollerkey: Port to new API model
-rw-r--r-- | demos/gtk-demo/font_features.c | 3 | ||||
-rw-r--r-- | demos/gtk-demo/hypertext.c | 4 | ||||
-rw-r--r-- | demos/icon-browser/iconbrowserwin.c | 9 | ||||
-rw-r--r-- | examples/search-bar.c | 3 | ||||
-rw-r--r-- | gtk/gtkcalendar.c | 24 | ||||
-rw-r--r-- | gtk/gtkcellrendereraccel.c | 10 | ||||
-rw-r--r-- | gtk/gtkcellrendererspin.c | 6 | ||||
-rw-r--r-- | gtk/gtkcoloreditor.c | 32 | ||||
-rw-r--r-- | gtk/gtkcolorplane.c | 10 | ||||
-rw-r--r-- | gtk/gtkcolorswatch.c | 9 | ||||
-rw-r--r-- | gtk/gtkentry.c | 3 | ||||
-rw-r--r-- | gtk/gtkentrycompletion.c | 10 | ||||
-rw-r--r-- | gtk/gtkeventcontrollerkey.c | 5 | ||||
-rw-r--r-- | gtk/gtkeventcontrollerkey.h | 2 | ||||
-rw-r--r-- | gtk/gtkflowbox.c | 9 | ||||
-rw-r--r-- | gtk/gtkiconview.c | 5 | ||||
-rw-r--r-- | gtk/gtkmenu.c | 7 | ||||
-rw-r--r-- | gtk/gtkmenushell.c | 8 | ||||
-rw-r--r-- | gtk/gtkplacessidebar.c | 11 | ||||
-rw-r--r-- | gtk/gtkplacesview.c | 9 | ||||
-rw-r--r-- | gtk/gtkrange.c | 9 | ||||
-rw-r--r-- | gtk/gtksearchbar.c | 6 | ||||
-rw-r--r-- | gtk/gtksearchentry.c | 6 | ||||
-rw-r--r-- | gtk/gtkshortcutswindow.c | 8 | ||||
-rw-r--r-- | gtk/gtktextview.c | 5 | ||||
-rw-r--r-- | gtk/inspector/object-tree.c | 3 | ||||
-rw-r--r-- | gtk/inspector/prop-list.c | 3 | ||||
-rw-r--r-- | gtk/inspector/resource-list.c | 3 | ||||
-rw-r--r-- | gtk/inspector/statistics.c | 3 |
29 files changed, 101 insertions, 124 deletions
diff --git a/demos/gtk-demo/font_features.c b/demos/gtk-demo/font_features.c index 32d801d71f..5e639576f0 100644 --- a/demos/gtk-demo/font_features.c +++ b/demos/gtk-demo/font_features.c @@ -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", diff --git a/demos/gtk-demo/hypertext.c b/demos/gtk-demo/hypertext.c index 0716b2748d..d0421cfd4d 100644 --- a/demos/gtk-demo/hypertext.c +++ b/demos/gtk-demo/hypertext.c @@ -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); diff --git a/demos/icon-browser/iconbrowserwin.c b/demos/icon-browser/iconbrowserwin.c index 91be683739..c9ee2e8448 100644 --- a/demos/icon-browser/iconbrowserwin.c +++ b/demos/icon-browser/iconbrowserwin.c @@ -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); } diff --git a/examples/search-bar.c b/examples/search-bar.c index 2dfeddf413..136354ac84 100644 --- a/examples/search-bar.c +++ b/examples/search-bar.c @@ -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 diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c index 3f00c38476..906789c2af 100644 --- a/gtk/gtkcalendar.c +++ b/gtk/gtkcalendar.c @@ -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++) @@ -1329,16 +1325,6 @@ calendar_set_month_prev (GtkCalendar *calendar) ****************************************/ 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) { GtkCalendarPrivate *priv = GTK_CALENDAR (widget)->priv; diff --git a/gtk/gtkcellrendereraccel.c b/gtk/gtkcellrendereraccel.c index fd55ea3d07..14a669b431 100644 --- a/gtk/gtkcellrendereraccel.c +++ b/gtk/gtkcellrendereraccel.c @@ -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); } diff --git a/gtk/gtkcellrendererspin.c b/gtk/gtkcellrendererspin.c index 5440019209..b8cbdfe179 100644 --- a/gtk/gtkcellrendererspin.c +++ b/gtk/gtkcellrendererspin.c @@ -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); diff --git a/gtk/gtkcoloreditor.c b/gtk/gtkcoloreditor.c index 34c5a7dd27..8f02600429 100644 --- a/gtk/gtkcoloreditor.c +++ b/gtk/gtkcoloreditor.c @@ -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); } diff --git a/gtk/gtkcolorplane.c b/gtk/gtkcolorplane.c index 0d2ea83d38..e9adcc31f2 100644 --- a/gtk/gtkcolorplane.c +++ b/gtk/gtkcolorplane.c @@ -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); } diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c index 7993dab50b..747303b9e5 100644 --- a/gtk/gtkcolorswatch.c +++ b/gtk/gtkcolorswatch.c @@ -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"); diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 84c8f61e4e..9a4a0f75de 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -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++) diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index f5b470d645..a47d3cdaa6 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -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)) diff --git a/gtk/gtkeventcontrollerkey.c b/gtk/gtkeventcontrollerkey.c index 3b2700a5e4..a998a0af89 100644 --- a/gtk/gtkeventcontrollerkey.c +++ b/gtk/gtkeventcontrollerkey.c @@ -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); } diff --git a/gtk/gtkeventcontrollerkey.h b/gtk/gtkeventcontrollerkey.h index 414f1fef02..c8a579773a 100644 --- a/gtk/gtkeventcontrollerkey.h +++ b/gtk/gtkeventcontrollerkey.h @@ -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, diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c index f294e4b572..f9391ec8f8 100644 --- a/gtk/gtkflowbox.c +++ b/gtk/gtkflowbox.c @@ -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 diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index 48da13353e..bcd42a02b0 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -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 */ diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index 602005957e..fec340e311 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -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); } diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index 69f1568d97..8873345ffa 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -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); } diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c index 3dc112559f..64e5e3c720 100644 --- a/gtk/gtkplacessidebar.c +++ b/gtk/gtkplacessidebar.c @@ -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); diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c index abbf5dd3df..fd5968dff0 100644 --- a/gtk/gtkplacesview.c +++ b/gtk/gtkplacesview.c @@ -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)); } diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 6fc46165ac..058b49968d 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -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) diff --git a/gtk/gtksearchbar.c b/gtk/gtksearchbar.c index 87c105826a..8f26e8ecf4 100644 --- a/gtk/gtksearchbar.c +++ b/gtk/gtksearchbar.c @@ -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); } } diff --git a/gtk/gtksearchentry.c b/gtk/gtksearchentry.c index cce039c644..7e50642f17 100644 --- a/gtk/gtksearchentry.c +++ b/gtk/gtksearchentry.c @@ -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); } } diff --git a/gtk/gtkshortcutswindow.c b/gtk/gtkshortcutswindow.c index 91551946b9..c9b55ef523 100644 --- a/gtk/gtkshortcutswindow.c +++ b/gtk/gtkshortcutswindow.c @@ -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); diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 6644ad21c9..d4a16e3354 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -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); diff --git a/gtk/inspector/object-tree.c b/gtk/inspector/object-tree.c index 0c04f8ba96..4e66b60236 100644 --- a/gtk/inspector/object-tree.c +++ b/gtk/inspector/object-tree.c @@ -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); diff --git a/gtk/inspector/prop-list.c b/gtk/inspector/prop-list.c index d88df3e322..9b851d86ec 100644 --- a/gtk/inspector/prop-list.c +++ b/gtk/inspector/prop-list.c @@ -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 diff --git a/gtk/inspector/resource-list.c b/gtk/inspector/resource-list.c index 141231f01f..92409e62d7 100644 --- a/gtk/inspector/resource-list.c +++ b/gtk/inspector/resource-list.c @@ -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); diff --git a/gtk/inspector/statistics.c b/gtk/inspector/statistics.c index a6c8482652..48b812d41d 100644 --- a/gtk/inspector/statistics.c +++ b/gtk/inspector/statistics.c @@ -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); |