From c043adaeb25d42d22d852afdae91541f712a793e Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Tue, 17 Feb 2026 18:51:53 -0500
Subject: [PATCH] Reapply "MacOS: improve scroll smoothing"
This reverts commit 63c0650321b774105ab8f3c5acbe933b5f5b4a2b.
This reverts a revert; leaving this in main, where we'll examine it in 3.6.0.
This remains reverted in release-3.4.x
Reference Issue #15058.
---
src/video/cocoa/SDL_cocoamouse.m | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m
index 1cc1022be5a75..17fb24452c31b 100644
--- a/src/video/cocoa/SDL_cocoamouse.m
+++ b/src/video/cocoa/SDL_cocoamouse.m
@@ -618,27 +618,17 @@ void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent *event)
SDL_MouseWheelDirection direction;
CGFloat x, y;
- x = -[event deltaX];
- y = [event deltaY];
+ x = -[event scrollingDeltaX];
+ y = [event scrollingDeltaY];
direction = SDL_MOUSEWHEEL_NORMAL;
if ([event isDirectionInvertedFromDevice] == YES) {
direction = SDL_MOUSEWHEEL_FLIPPED;
}
- /* 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);
- }
+ if ([event hasPreciseScrollingDeltas]) {
+ x *= 0.1;
+ y *= 0.1;
}
SDL_SendMouseWheel(Cocoa_GetEventTimestamp([event timestamp]), window, mouseID, x, y, direction);