MacOS: improve scroll smoothing

Use scrollingDelta instead of delta, as recommended by the Apple documentation.
It gives much smoother scrolling.
This commit is contained in:
Stéphane GINIER 2025-05-14 03:31:51 +02:00
parent cf62637261
commit 5849242859
1 changed files with 5 additions and 15 deletions

View File

@ -538,27 +538,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);