emscripten: scale mousewheel X coordinates correctly, not just Y coordinates.

Fixes #10454.

(cherry picked from commit 4ea26a7771)
This commit is contained in:
Ryan C. Gordon committed 2024-10-23 23:39:40 -04:00
1 parent 52714d5063
commit 00f15dd215
1 file changed
+5 -1
+5 -1
View File
@@ -714,20 +714,24 @@ static EM_BOOL Emscripten_HandleWheel(int eventType, const EmscriptenWheelEvent
SDL_WindowData *window_data = userData; SDL_WindowData *window_data = userData;
float deltaY = wheelEvent->deltaY; float deltaY = wheelEvent->deltaY;
float deltaX = wheelEvent->deltaX;
switch (wheelEvent->deltaMode) { switch (wheelEvent->deltaMode) {
case DOM_DELTA_PIXEL: case DOM_DELTA_PIXEL:
deltaY /= 100; /* 100 pixels make up a step */ deltaY /= 100; /* 100 pixels make up a step */
deltaX /= 100; /* 100 pixels make up a step */
break; break;
case DOM_DELTA_LINE: case DOM_DELTA_LINE:
deltaY /= 3; /* 3 lines make up a step */ deltaY /= 3; /* 3 lines make up a step */
deltaX /= 3; /* 3 lines make up a step */
break; break;
case DOM_DELTA_PAGE: case DOM_DELTA_PAGE:
deltaY *= 80; /* A page makes up 80 steps */ deltaY *= 80; /* A page makes up 80 steps */
deltaX *= 80; /* A page makes up 80 steps */
break; 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; return SDL_GetEventState(SDL_MOUSEWHEEL) == SDL_ENABLE;
} }