[cheese] Handle smooth scroll wheel events in EogThumbNav
- From: David King <davidk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cheese] Handle smooth scroll wheel events in EogThumbNav
- Date: Mon, 19 Mar 2012 21:21:42 +0000 (UTC)
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]