From 321cea66c5b65f3b4fe6cc89169a9c13b476c8d1 Mon Sep 17 00:00:00 2001
From: infirit <infirit@gmail.com>
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 <friemann@gnome.org>
---
 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 <glib/gi18n.h>
 #include <glib-object.h>
 #include <gtk/gtk.h>
+#include <math.h>
 #include <string.h>
 
 #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