Reapply "MacOS: improve scroll smoothing"

This reverts commit 63c0650321.

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.
This commit is contained in:
Ryan C. Gordon
2026-02-17 18:51:53 -05:00
parent 0f2d415dee
commit c043adaeb2

View File

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