From 00f15dd215b7fa9de754a5a9c5337d38895019bb Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Wed, 23 Oct 2024 23:35:02 -0400
Subject: [PATCH] emscripten: scale mousewheel X coordinates correctly, not
just Y coordinates.
Fixes #10454.
(cherry picked from commit 4ea26a777104fcd59ddb49d77f4a91a66dee13c9)
---
src/video/emscripten/SDL_emscriptenevents.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/video/emscripten/SDL_emscriptenevents.c b/src/video/emscripten/SDL_emscriptenevents.c
index bcec00cffa1fa..f2cb2ed5c8c92 100644
--- a/src/video/emscripten/SDL_emscriptenevents.c
+++ b/src/video/emscripten/SDL_emscriptenevents.c
@@ -714,20 +714,24 @@ static EM_BOOL Emscripten_HandleWheel(int eventType, const EmscriptenWheelEvent
SDL_WindowData *window_data = userData;
float deltaY = wheelEvent->deltaY;
+ float deltaX = wheelEvent->deltaX;
switch (wheelEvent->deltaMode) {
case DOM_DELTA_PIXEL:
deltaY /= 100; /* 100 pixels make up a step */
+ deltaX /= 100; /* 100 pixels make up a step */
break;
case DOM_DELTA_LINE:
deltaY /= 3; /* 3 lines make up a step */
+ deltaX /= 3; /* 3 lines make up a step */
break;
case DOM_DELTA_PAGE:
deltaY *= 80; /* A page makes up 80 steps */
+ deltaX *= 80; /* A page makes up 80 steps */
break;
}
- SDL_SendMouseWheel(window_data->window, 0, (float)wheelEvent->deltaX, -deltaY, SDL_MOUSEWHEEL_NORMAL);
+ SDL_SendMouseWheel(window_data->window, 0, deltaX, -deltaY, SDL_MOUSEWHEEL_NORMAL);
return SDL_GetEventState(SDL_MOUSEWHEEL) == SDL_ENABLE;
}