diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2019-10-21 17:10:30 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2019-10-21 17:10:30 +0200 |
commit | c9a1adf2ccf7df5211b3c768f1361de1942e1a7b (patch) | |
tree | bcdbfde4cbd0e1709031bfe87a0d9f44d52fa606 | |
parent | ebd1840802a11f1f0b668064f4ba3c014c47c045 (diff) | |
download | gtk+-c9a1adf2ccf7df5211b3c768f1361de1942e1a7b.tar.gz |
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.
-rw-r--r-- | gtk/gtkwidget.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 2848d757b5..65b168eb47 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -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; @@ -7187,6 +7190,14 @@ gtk_widget_draw (GtkWidget *widget, } 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) { |