summaryrefslogtreecommitdiff
path: root/sdl2-macos-mouse-scrolling.diff
blob: e2f30c24db7208db37775cd081f2adbd90e1fe96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
diff -r 4f06c06b6d19 src/events/SDL_mouse.c
--- a/src/events/SDL_mouse.c    Wed Aug 05 15:28:51 2020 +0200
+++ b/src/events/SDL_mouse.c    Tue Nov 10 12:16:06 2020 +0200
@@ -642,8 +642,8 @@
         event.wheel.preciseX = x;
         event.wheel.preciseY = y;
 #endif
-        event.wheel.x = integral_x;
-        event.wheel.y = integral_y;
+        event.wheel.x = x; //integral_x;
+        event.wheel.y = y; //integral_y;
         event.wheel.direction = (Uint32)direction;
         posted = (SDL_PushEvent(&event) > 0);
     }
diff -r 4f06c06b6d19 src/video/cocoa/SDL_cocoamouse.m
--- a/src/video/cocoa/SDL_cocoamouse.m  Wed Aug 05 15:28:51 2020 +0200
+++ b/src/video/cocoa/SDL_cocoamouse.m  Tue Nov 10 12:16:06 2020 +0200
@@ -424,10 +424,16 @@
     }
 
     SDL_MouseID mouseID = mouse->mouseID;
-    CGFloat x = -[event deltaX];
-    CGFloat y = [event deltaY];
+    CGFloat x = -[event scrollingDeltaX];
+    CGFloat y = [event scrollingDeltaY];
     SDL_MouseWheelDirection direction = SDL_MOUSEWHEEL_NORMAL;
 
+    /* HACK: Make a distinction between precise and imprecise scrolling.
+       Trackpad seems to be mouseID 0. */
+    if (![event hasPreciseScrollingDeltas]) {
+        mouseID = 1;
+    }
+
     if ([event respondsToSelector:@selector(isDirectionInvertedFromDevice)]) {
         if ([event isDirectionInvertedFromDevice] == YES) {
             direction = SDL_MOUSEWHEEL_FLIPPED;