Przeglądaj źródła

Revert "MacOS: improve scroll smoothing"

This reverts commit 5dab2c73f0537bd121d2311b6949a654c5692af9.

We'll revisit this in the next SDL release.

Reference Issue #15058.

(cherry picked from commit 63c0650321b774105ab8f3c5acbe933b5f5b4a2b)
Ryan C. Gordon 2 tygodni temu
rodzic
commit
3a5d0bac71
1 zmienionych plików z 15 dodań i 5 usunięć
  1. 15 5
      src/video/cocoa/SDL_cocoamouse.m

+ 15 - 5
src/video/cocoa/SDL_cocoamouse.m

@@ -618,17 +618,27 @@ void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent *event)
     SDL_MouseWheelDirection direction;
     CGFloat x, y;
 
-    x = -[event scrollingDeltaX];
-    y = [event scrollingDeltaY];
+    x = -[event deltaX];
+    y = [event deltaY];
     direction = SDL_MOUSEWHEEL_NORMAL;
 
     if ([event isDirectionInvertedFromDevice] == YES) {
         direction = SDL_MOUSEWHEEL_FLIPPED;
     }
 
-    if ([event hasPreciseScrollingDeltas]) {
-        x *= 0.1;
-        y *= 0.1;
+    /* For discrete scroll events from conventional mice, always send a full tick.
+       For continuous scroll events from trackpads, send fractional deltas for smoother scrolling. */
+    if (![event hasPreciseScrollingDeltas]) {
+        if (x > 0) {
+            x = SDL_ceil(x);
+        } else if (x < 0) {
+            x = SDL_floor(x);
+        }
+        if (y > 0) {
+            y = SDL_ceil(y);
+        } else if (y < 0) {
+            y = SDL_floor(y);
+        }
     }
 
     SDL_SendMouseWheel(Cocoa_GetEventTimestamp([event timestamp]), window, mouseID, x, y, direction);