diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index d85f3109ed..af5431bd1f 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -12043,6 +12043,24 @@ gtk_widget_reset_controllers (GtkWidget *widget) } } +GList * +gtk_widget_list_controllers (GtkWidget *widget, + GtkPropagationPhase phase) +{ + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); + GList *res = NULL, *l; + + for (l = priv->event_controllers; l; l = l->next) + { + GtkEventController *controller = l->data; + + if (gtk_event_controller_get_propagation_phase (controller) == phase) + res = g_list_prepend (res, controller); + } + + return g_list_reverse (res); +} + static inline void gtk_widget_maybe_add_debug_render_nodes (GtkWidget *widget, GtkSnapshot *snapshot) diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 9b5bed504a..41c78b98c3 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -284,6 +284,9 @@ gboolean gtk_widget_has_size_request (GtkWidget *widget); void gtk_widget_reset_controllers (GtkWidget *widget); +GList * gtk_widget_list_controllers (GtkWidget *widget, + GtkPropagationPhase phase); + gboolean gtk_widget_query_tooltip (GtkWidget *widget, gint x, gint y,