diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 75935bcf96..14f6133748 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -13006,17 +13006,7 @@ gtk_widget_propagate_state (GtkWidget *widget, } if (!gtk_widget_is_sensitive (widget)) - { - EventControllerData *controller_data; - GList *l; - - /* Reset all controllers */ - for (l = priv->event_controllers; l; l = l->next) - { - controller_data = l->data; - gtk_event_controller_reset (controller_data->controller); - } - } + gtk_widget_reset_controllers (widget); if (GTK_IS_CONTAINER (widget)) { @@ -17596,3 +17586,18 @@ _gtk_widget_consumes_motion (GtkWidget *widget, return FALSE; } + +void +gtk_widget_reset_controllers (GtkWidget *widget) +{ + EventControllerData *controller_data; + GtkWidgetPrivate *priv = widget->priv; + GList *l; + + /* Reset all controllers */ + for (l = priv->event_controllers; l; l = l->next) + { + controller_data = l->data; + gtk_event_controller_reset (controller_data->controller); + } +} diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 18bc98030c..c54ecccc8f 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -294,6 +294,8 @@ void gtk_widget_set_csd_input_shape (GtkWidget gboolean gtk_widget_has_size_request (GtkWidget *widget); +void gtk_widget_reset_controllers (GtkWidget *widget); + /* inline getters */ static inline gboolean