From 321cea66c5b65f3b4fe6cc89169a9c13b476c8d1 Mon Sep 17 00:00:00 2001 From: infirit Date: Thu, 24 Jul 2014 20:08:06 +0200 Subject: EomThumbNav: Fix mousewheel scrolling with gtk-3.3.18 and xserver-1.12 Handle incoming smooth scroll events that are oviously caused by the scrollwheel just like legacy scroll events. Based on eog commit 22618a75bcf2a754f5fbe48b2d49c27b5e66ecd5 From Felix Riemann --- src/eom-thumb-nav.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/eom-thumb-nav.c b/src/eom-thumb-nav.c index 949c46a..702b4c5 100644 --- a/src/eom-thumb-nav.c +++ b/src/eom-thumb-nav.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #define EOM_THUMB_NAV_GET_PRIVATE(object) \ @@ -82,6 +83,25 @@ eom_thumb_nav_scroll_event (GtkWidget *widget, GdkEventScroll *event, gpointer u case GDK_SCROLL_RIGHT: break; +#if GTK_CHECK_VERSION (3, 3, 18) + case GDK_SCROLL_SMOOTH: + { + /* Compatibility code to catch smooth events from mousewheels */ + gdouble x_delta, y_delta; + gboolean set = gdk_event_get_scroll_deltas ((GdkEvent*)event, + &x_delta, &y_delta); + + /* Propagate horizontal smooth scroll events further, + as well as non-mousewheel events. */ + if (G_UNLIKELY (!set) || x_delta != 0.0 || fabs(y_delta) != 1.0) + return FALSE; + + /* The y_delta is either +1.0 or -1.0 here */ + inc *= (gint) y_delta; + } + break; +#endif + default: g_assert_not_reached (); return FALSE; -- cgit v1.2.1