From 3ebd1c3fe77809a80ff1d647ba2d368b5aea0623 Mon Sep 17 00:00:00 2001 From: Ernestas Kulik Date: Wed, 18 Jul 2018 16:34:39 +0300 Subject: eventcontrollerscroll: Conditionally propagate ::scroll MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, gtk_event_controller_scroll_handle_event() always returns TRUE if it is handled, which stops the propagation of the event. If there’s a single GtkEventControllerScroll in the widget hierarchy, that means that no others will run, depending on the propagation phase. In Nautilus, this can be observed when adding a scroll controller to the GtkScrolledWindow (ctrl-scrolling controls the zoom level) - either the scrolling or the zooming breaks. Fixes https://gitlab.gnome.org/GNOME/gtk/issues/45 --- gtk/gtkmenu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gtk/gtkmenu.c') diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index 1efbb2ed4d..d73f2df91d 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -247,7 +247,7 @@ static void gtk_menu_grab_notify (GtkWidget *widget, static gboolean gtk_menu_captured_event (GtkWidget *widget, GdkEvent *event); -static void gtk_menu_scroll_controller_scroll (GtkEventControllerScroll *scroll, +static gboolean gtk_menu_scroll_controller_scroll (GtkEventControllerScroll *scroll, gdouble dx, gdouble dy, GtkMenu *menu); @@ -3211,13 +3211,15 @@ gtk_menu_scroll_timeout (gpointer data) return TRUE; } -static void +static gboolean gtk_menu_scroll_controller_scroll (GtkEventControllerScroll *scroll, gdouble dx, gdouble dy, GtkMenu *menu) { gtk_menu_scroll_by (menu, dy * MENU_SCROLL_STEP2); + + return TRUE; } static void -- cgit v1.2.1