1From 7e06599edaf97a91943e992f412116e6513c0c7e Mon Sep 17 00:00:00 2001
2From: Kristian Rietveld <kris@lanedo.com>
3Date: Sat, 23 Feb 2013 00:52:43 +0100
4Subject: [PATCH 32/68] Add momentum_phase to GdkEventScroll
5
6We need this for the detection of legacy mice that do emit precise
7deltas.
8---
9 gdk/gdkevents.h               |    1 +
10 gdk/gdkwindow.c               |    1 +
11 gdk/quartz/gdkevents-quartz.c |   16 ++++++++++++----
12 3 files changed, 14 insertions(+), 4 deletions(-)
13
14diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h
15index 765b520..1cbfc58 100644
16--- a/gdk/gdkevents.h
17+++ b/gdk/gdkevents.h
18@@ -349,6 +349,7 @@ struct _GdkEventScroll
19   gdouble delta_x;
20   gdouble delta_y;
21   GdkEventScrollPhase phase;
22+  GdkEventScrollPhase momentum_phase;
23 };
24
25 struct _GdkEventKey
26diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
27index 1dac543..7a3732c 100644
28--- a/gdk/gdkwindow.c
29+++ b/gdk/gdkwindow.c
30@@ -10898,6 +10898,7 @@ proxy_button_event (GdkEvent *source_event,
31       event->scroll.delta_x = source_event->scroll.delta_x;
32       event->scroll.delta_y = source_event->scroll.delta_y;
33       event->scroll.phase = source_event->scroll.phase;
34+      event->scroll.momentum_phase = source_event->scroll.momentum_phase;
35       return TRUE;
36
37     default:
38diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
39index bb4da70..f3ba2c8 100644
40--- a/gdk/quartz/gdkevents-quartz.c
41+++ b/gdk/quartz/gdkevents-quartz.c
42@@ -63,6 +63,7 @@ static GdkWindow *find_toplevel_under_pointer   (GdkDisplay *display,
43 - (CGFloat) scrollingDeltaX;
44 - (CGFloat) scrollingDeltaY;
45 - (int) phase;
46+- (int) momentumPhase;
47 @end
48
49
50@@ -992,6 +993,7 @@ fill_scroll_event (GdkWindow          *window,
51                    gdouble             delta_x,
52                    gdouble             delta_y,
53                    GdkEventScrollPhase phase,
54+                   GdkEventScrollPhase momentum_phase,
55                    GdkScrollDirection  direction)
56 {
57   GdkWindowObject *private;
58@@ -1015,6 +1017,7 @@ fill_scroll_event (GdkWindow          *window,
59   event->scroll.delta_x = delta_x;
60   event->scroll.delta_y = delta_y;
61   event->scroll.phase = phase;
62+  event->scroll.momentum_phase = momentum_phase;
63 }
64
65 static void
66@@ -1516,7 +1519,7 @@ gdk_event_translate (GdkEvent *event,
67	if (gdk_quartz_osx_version() >= GDK_OSX_LION &&
68	    [(id <PreciseDeltas>) nsevent hasPreciseScrollingDeltas])
69	  {
70-            GdkEventScrollPhase phase;
71+            GdkEventScrollPhase phase, momentum_phase;
72	    dx = [(id <PreciseDeltas>) nsevent scrollingDeltaX];
73	    dy = [(id <PreciseDeltas>) nsevent scrollingDeltaY];
74
75@@ -1536,9 +1539,10 @@ gdk_event_translate (GdkEvent *event,
76               }
77
78             phase = gdk_event_scroll_phase_from_ns_event_phase ([(id <PreciseDeltas>) nsevent phase]);
79+            momentum_phase = gdk_event_scroll_phase_from_ns_event_phase ([(id <PreciseDeltas>) nsevent momentumPhase]);
80
81             fill_scroll_event (window, event, nsevent, x, y, x_root, y_root,
82-                               TRUE, -dx, -dy, phase, direction);
83+                               TRUE, -dx, -dy, phase, momentum_phase, direction);
84	  }
85	else
86	  {
87@@ -1553,7 +1557,9 @@ gdk_event_translate (GdkEvent *event,
88                   direction = GDK_SCROLL_UP;
89
90                 fill_scroll_event (window, event, nsevent, x, y, x_root, y_root,
91-                                   FALSE, 0.0, fabs (dy), GDK_EVENT_SCROLL_PHASE_NONE,
92+                                   FALSE, 0.0, fabs (dy),
93+                                   GDK_EVENT_SCROLL_PHASE_NONE,
94+                                   GDK_EVENT_SCROLL_PHASE_NONE,
95                                    direction);
96               }
97             else if (dx != 0.0)
98@@ -1564,7 +1570,9 @@ gdk_event_translate (GdkEvent *event,
99                   direction = GDK_SCROLL_LEFT;
100
101                 fill_scroll_event (window, event, nsevent, x, y, x_root, y_root,
102-                                   FALSE, fabs (dx), 0.0, GDK_EVENT_SCROLL_PHASE_NONE,
103+                                   FALSE, fabs (dx), 0.0,
104+                                   GDK_EVENT_SCROLL_PHASE_NONE,
105+                                   GDK_EVENT_SCROLL_PHASE_NONE,
106                                    direction);
107               }
108           }
109--
1101.7.10.2 (Apple Git-33)
111