From 1f3f71439308e9469480b2fe0061e9b99cbc2773 Mon Sep 17 00:00:00 2001 From: Isabella Basso Date: Mon, 6 Jul 2026 17:13:04 -0300 Subject: [PATCH] cocoa: restore discrete mouse wheel ticks --- src/video/cocoa/SDL_cocoamouse.m | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index dc4dd39927..2b476e5956 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -918,8 +918,6 @@ void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent *event) SDL_MouseWheelDirection direction; CGFloat x, y; - x = -[event scrollingDeltaX]; - y = [event scrollingDeltaY]; direction = SDL_MOUSEWHEEL_NORMAL; if ([event isDirectionInvertedFromDevice] == YES) { @@ -927,8 +925,21 @@ void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent *event) } if ([event hasPreciseScrollingDeltas]) { - x *= 0.1; - y *= 0.1; + x = -[event scrollingDeltaX] * 0.1f; + y = [event scrollingDeltaY] * 0.1f; + } else { + x = -[event deltaX]; + y = [event deltaY]; + 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);