mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-15 06:16:00 +00:00
emscripten: scale mousewheel X coordinates correctly, not just Y coordinates.
Fixes #10454.
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user