summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eom-thumb-nav.c20
1 files changed, 20 insertions, 0 deletions
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;