diff options
author | Benjamin Otte <otte@redhat.com> | 2018-03-10 20:02:28 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2018-04-05 20:23:33 +0200 |
commit | 01e88743ef80cffe1bb1a1ea5bd65e23061178c1 (patch) | |
tree | fcd59936e08f84a12497570fdabbf79a278df40c /gtk/gtkwidget.c | |
parent | dfa7f99336cf1f7d678a66d760a45ff34a2c7a0b (diff) | |
download | gtk+-wip/otte/controller.tar.gz |
eventcontroller: Make widget no longer a construct-only propertywip/otte/controller
The new API model is now complete. To set a widget on a controller, it
is now necessary to call gtk_widget_add_controller().
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r-- | gtk/gtkwidget.c | 45 |
1 files changed, 17 insertions, 28 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index a81befee3b..947e7d0fe6 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -459,7 +459,6 @@ typedef struct { GtkEventController *controller; guint grab_notify_id; guint sequence_state_changed_id; - gboolean have_ref; } EventControllerData; struct _GtkWidgetClassPrivate @@ -12999,11 +12998,24 @@ event_controller_sequence_state_changed (GtkGesture *gesture, cancel_event_sequence_on_hierarchy (widget, event_widget, sequence); } +/** + * gtk_widget_add_controller: + * @widget: a #GtkWidget + * @controller: (transfer full): a #GtkEventController that hasn't been + * added to a widget yet + * + * Adds @controller to @widget so that it will receive events. You will + * usually want to call this function right after creating any kind of + * #GtkEventController. + **/ void -_gtk_widget_add_controller (GtkWidget *widget, - GtkEventController *controller, - gboolean have_ref) +gtk_widget_add_controller (GtkWidget *widget, + GtkEventController *controller) { + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (GTK_IS_EVENT_CONTROLLER (controller)); + g_return_if_fail (gtk_event_controller_get_widget (controller) == NULL); + EventControllerData *data; GtkWidgetPrivate *priv; @@ -13012,7 +13024,6 @@ _gtk_widget_add_controller (GtkWidget *widget, GTK_EVENT_CONTROLLER_GET_CLASS (controller)->set_widget (controller, widget); data = g_new0 (EventControllerData, 1); - data->have_ref = have_ref; data->controller = controller; data->grab_notify_id = g_signal_connect (widget, "grab-notify", @@ -13032,27 +13043,6 @@ _gtk_widget_add_controller (GtkWidget *widget, } /** - * gtk_widget_add_controller: - * @widget: a #GtkWidget - * @controller: (transfer full): a #GtkEventController that hasn't been - * added to a widget yet - * - * Adds @controller to @widget so that it will receive events. You will - * usually want to call this function right after creating any kind of - * #GtkEventController. - **/ -void -gtk_widget_add_controller (GtkWidget *widget, - GtkEventController *controller) -{ - g_return_if_fail (GTK_IS_WIDGET (widget)); - g_return_if_fail (GTK_IS_EVENT_CONTROLLER (controller)); - g_return_if_fail (gtk_event_controller_get_widget (controller) == NULL); - - _gtk_widget_add_controller (widget, controller, TRUE); -} - -/** * gtk_widget_remove_controller: * @widget: a #GtkWidget * @controller: (transfer none): a #GtkEventController @@ -13098,8 +13088,7 @@ gtk_widget_remove_controller (GtkWidget *widget, g_signal_handler_disconnect (data->controller, data->sequence_state_changed_id); data->controller = NULL; - if (data->have_ref) - g_object_unref (controller); + g_object_unref (controller); } GList * |