diff --git a/gtk/gtkeventcontroller.c b/gtk/gtkeventcontroller.c index 4a77040bdd..c20c84e0d3 100644 --- a/gtk/gtkeventcontroller.c +++ b/gtk/gtkeventcontroller.c @@ -75,6 +75,7 @@ gtk_event_controller_set_property (GObject *object, { case PROP_WIDGET: priv->widget = g_value_get_object (value); + g_object_add_weak_pointer (G_OBJECT (priv->widget), (gpointer *) &priv->widget); break; case PROP_PROPAGATION_PHASE: gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (object), diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index c068658eba..bb7783d5d5 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -17104,6 +17104,8 @@ _gtk_widget_add_controller (GtkWidget *widget, g_signal_connect (widget, "grab-notify", G_CALLBACK (event_controller_grab_notify), data); + g_object_add_weak_pointer (G_OBJECT (data->controller), (gpointer *) &data->controller); + if (GTK_IS_GESTURE (controller)) { data->sequence_state_changed_id =