From 7e06599edaf97a91943e992f412116e6513c0c7e Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Sat, 23 Feb 2013 00:52:43 +0100 Subject: [PATCH 32/68] Add momentum_phase to GdkEventScroll We need this for the detection of legacy mice that do emit precise deltas. --- gdk/gdkevents.h | 1 + gdk/gdkwindow.c | 1 + gdk/quartz/gdkevents-quartz.c | 16 ++++++++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h index 765b520..1cbfc58 100644 --- a/gdk/gdkevents.h +++ b/gdk/gdkevents.h @@ -349,6 +349,7 @@ struct _GdkEventScroll gdouble delta_x; gdouble delta_y; GdkEventScrollPhase phase; + GdkEventScrollPhase momentum_phase; }; struct _GdkEventKey diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 1dac543..7a3732c 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -10898,6 +10898,7 @@ proxy_button_event (GdkEvent *source_event, event->scroll.delta_x = source_event->scroll.delta_x; event->scroll.delta_y = source_event->scroll.delta_y; event->scroll.phase = source_event->scroll.phase; + event->scroll.momentum_phase = source_event->scroll.momentum_phase; return TRUE; default: diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index bb4da70..f3ba2c8 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -63,6 +63,7 @@ static GdkWindow *find_toplevel_under_pointer (GdkDisplay *display, - (CGFloat) scrollingDeltaX; - (CGFloat) scrollingDeltaY; - (int) phase; +- (int) momentumPhase; @end @@ -992,6 +993,7 @@ fill_scroll_event (GdkWindow *window, gdouble delta_x, gdouble delta_y, GdkEventScrollPhase phase, + GdkEventScrollPhase momentum_phase, GdkScrollDirection direction) { GdkWindowObject *private; @@ -1015,6 +1017,7 @@ fill_scroll_event (GdkWindow *window, event->scroll.delta_x = delta_x; event->scroll.delta_y = delta_y; event->scroll.phase = phase; + event->scroll.momentum_phase = momentum_phase; } static void @@ -1516,7 +1519,7 @@ gdk_event_translate (GdkEvent *event, if (gdk_quartz_osx_version() >= GDK_OSX_LION && [(id ) nsevent hasPreciseScrollingDeltas]) { - GdkEventScrollPhase phase; + GdkEventScrollPhase phase, momentum_phase; dx = [(id ) nsevent scrollingDeltaX]; dy = [(id ) nsevent scrollingDeltaY]; @@ -1536,9 +1539,10 @@ gdk_event_translate (GdkEvent *event, } phase = gdk_event_scroll_phase_from_ns_event_phase ([(id ) nsevent phase]); + momentum_phase = gdk_event_scroll_phase_from_ns_event_phase ([(id ) nsevent momentumPhase]); fill_scroll_event (window, event, nsevent, x, y, x_root, y_root, - TRUE, -dx, -dy, phase, direction); + TRUE, -dx, -dy, phase, momentum_phase, direction); } else { @@ -1553,7 +1557,9 @@ gdk_event_translate (GdkEvent *event, direction = GDK_SCROLL_UP; fill_scroll_event (window, event, nsevent, x, y, x_root, y_root, - FALSE, 0.0, fabs (dy), GDK_EVENT_SCROLL_PHASE_NONE, + FALSE, 0.0, fabs (dy), + GDK_EVENT_SCROLL_PHASE_NONE, + GDK_EVENT_SCROLL_PHASE_NONE, direction); } else if (dx != 0.0) @@ -1564,7 +1570,9 @@ gdk_event_translate (GdkEvent *event, direction = GDK_SCROLL_LEFT; fill_scroll_event (window, event, nsevent, x, y, x_root, y_root, - FALSE, fabs (dx), 0.0, GDK_EVENT_SCROLL_PHASE_NONE, + FALSE, fabs (dx), 0.0, + GDK_EVENT_SCROLL_PHASE_NONE, + GDK_EVENT_SCROLL_PHASE_NONE, direction); } } -- 1.7.10.2 (Apple Git-33)