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

Fixes #10454.
This commit is contained in:
Ryan C. Gordon
2024-10-23 23:35:02 -04:00
parent d0cf2c19d1
commit 4ea26a7771

View File

@@ -360,20 +360,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:
deltaX /= 100; // 100 pixels make up a step
deltaY /= 100; // 100 pixels make up a step deltaY /= 100; // 100 pixels make up a step
break; break;
case DOM_DELTA_LINE: case DOM_DELTA_LINE:
deltaX /= 3; // 3 lines make up a step
deltaY /= 3; // 3 lines make up a step deltaY /= 3; // 3 lines make up a step
break; break;
case DOM_DELTA_PAGE: case DOM_DELTA_PAGE:
deltaX *= 80; // A page makes up 80 steps
deltaY *= 80; // A page makes up 80 steps deltaY *= 80; // A page makes up 80 steps
break; break;
} }
SDL_SendMouseWheel(0, window_data->window, SDL_DEFAULT_MOUSE_ID, (float)wheelEvent->deltaX, -deltaY, SDL_MOUSEWHEEL_NORMAL); SDL_SendMouseWheel(0, window_data->window, SDL_DEFAULT_MOUSE_ID, deltaX, -deltaY, SDL_MOUSEWHEEL_NORMAL);
return SDL_EventEnabled(SDL_EVENT_MOUSE_WHEEL); return SDL_EventEnabled(SDL_EVENT_MOUSE_WHEEL);
} }