[cheese] Handle smooth scroll wheel events in EogThumbNav



commit e84891c903653bc3d3a9b9af9cd7c6b93275f3f1
Author: David King <amigadave amigadave com>
Date:   Sun Mar 18 10:57:08 2012 +0000

    Handle smooth scroll wheel events in EogThumbNav
    
    Fixes bug 672311.

 src/thumbview/eog-thumb-nav.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)
---
diff --git a/src/thumbview/eog-thumb-nav.c b/src/thumbview/eog-thumb-nav.c
index 6eb65f8..4236757 100644
--- a/src/thumbview/eog-thumb-nav.c
+++ b/src/thumbview/eog-thumb-nav.c
@@ -31,6 +31,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 #include <string.h>
+#include <math.h>
 
 #define EOG_THUMB_NAV_GET_PRIVATE(object) \
   (G_TYPE_INSTANCE_GET_PRIVATE ((object), EOG_TYPE_THUMB_NAV, EogThumbNavPrivate))
@@ -73,12 +74,25 @@ eog_thumb_nav_scroll_event (GtkWidget *widget, GdkEventScroll *event, gpointer u
 {
   EogThumbNav *nav = EOG_THUMB_NAV (user_data);
   gint         inc = EOG_THUMB_NAV_SCROLL_INC * 3;
-  gdouble      value, upper, page_size;
+  gdouble      value, upper, page_size, delta_x, delta_y;
+  gboolean smooth;
 
   nav->priv->adj = nav->priv->vertical ? nav->priv->vadj : nav->priv->hadj;
 
   switch (event->direction)
   {
+#if GTK_CHECK_VERSION (3, 3, 18)
+    /* Handle smooth scroll events from mouse wheels, bug 672311. */
+    case GDK_SCROLL_SMOOTH:
+      smooth = gdk_event_get_scroll_deltas ((const GdkEvent *) event,
+                                            &delta_x, &delta_y);
+      /* Pass through non-mouse wheel events. */
+      if (G_UNLIKELY (!smooth) || delta_x != 0.0 || fabs (delta_y) != 1.0)
+        return FALSE;
+
+      inc *= (gint) delta_y;
+      break;
+#endif
     case GDK_SCROLL_UP:
     case GDK_SCROLL_LEFT:
       inc *= -1;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]