Browse Source

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

Fixes #10454.

(cherry picked from commit 00f15dd215b7fa9de754a5a9c5337d38895019bb)
Ryan C. Gordon 5 months ago
parent
commit
5c9f37080e
1 changed files with 5 additions and 1 deletions
  1. 5 1
      src/video/emscripten/SDL_emscriptenevents.c

+ 5 - 1
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;
 }