gtkwidget: Forward unhandled scroll events through controllers

Do just like button/motion/touch do, let the scroll events go first
through the event handler, and fallback on the current event controllers
afterwards.

Fixes handling of bubbled scroll events in the scroll controller.
This commit is contained in:
Carlos Garnacho
2019-10-21 17:10:30 +02:00
parent ebd1840802
commit c9a1adf2cc

View File

@ -673,6 +673,8 @@ static gboolean _gtk_widget_run_controllers (GtkWidget *widget,
static void gtk_widget_dispatch_child_properties_changed (GtkWidget *object,
guint n_pspecs,
GParamSpec **pspecs);
static gboolean gtk_widget_real_scroll_event (GtkWidget *widget,
GdkEventScroll *event);
static gboolean gtk_widget_real_button_event (GtkWidget *widget,
GdkEventButton *event);
static gboolean gtk_widget_real_motion_event (GtkWidget *widget,
@ -1061,6 +1063,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
klass->move_focus = gtk_widget_real_move_focus;
klass->keynav_failed = gtk_widget_real_keynav_failed;
klass->event = NULL;
klass->scroll_event = gtk_widget_real_scroll_event;
klass->button_press_event = gtk_widget_real_button_event;
klass->button_release_event = gtk_widget_real_button_event;
klass->motion_notify_event = gtk_widget_real_motion_event;
@ -7186,6 +7189,14 @@ gtk_widget_draw (GtkWidget *widget,
cairo_restore (cr);
}
static gboolean
gtk_widget_real_scroll_event (GtkWidget *widget,
GdkEventScroll *event)
{
return _gtk_widget_run_controllers (widget, (GdkEvent *) event,
GTK_PHASE_BUBBLE);
}
static gboolean
gtk_widget_real_button_event (GtkWidget *widget,
GdkEventButton *event)