From 1f3f71439308e9469480b2fe0061e9b99cbc2773 Mon Sep 17 00:00:00 2001
From: Isabella Basso <[EMAIL REDACTED]>
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 dc4dd39927443..2b476e5956b91 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);