From c9591c515cc7f8ded69989b27d31dc1e23a6cf8a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 17 Feb 2026 19:00:36 -0500 Subject: [PATCH] emscripten: Fix only one mouse button being usable at a time. Fixes #15056. --- src/video/emscripten/SDL_emscriptenevents.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/video/emscripten/SDL_emscriptenevents.c b/src/video/emscripten/SDL_emscriptenevents.c index ddd47d2b46..6326d6967e 100644 --- a/src/video/emscripten/SDL_emscriptenevents.c +++ b/src/video/emscripten/SDL_emscriptenevents.c @@ -667,14 +667,14 @@ typedef struct Emscripten_PointerEvent static void Emscripten_HandleMouseButton(SDL_WindowData *window_data, const Emscripten_PointerEvent *event) { Uint8 sdl_button; - const bool down = (event->down != 0); + bool down = false; switch (event->button) { - #define CHECK_MOUSE_BUTTON(jsbutton, sdlbutton) case jsbutton: sdl_button = SDL_BUTTON_##sdlbutton; break - CHECK_MOUSE_BUTTON(0, LEFT); - CHECK_MOUSE_BUTTON(1, MIDDLE); - CHECK_MOUSE_BUTTON(2, RIGHT); - CHECK_MOUSE_BUTTON(3, X1); - CHECK_MOUSE_BUTTON(4, X2); + #define CHECK_MOUSE_BUTTON(jsbutton, downflag, sdlbutton) case jsbutton: sdl_button = SDL_BUTTON_##sdlbutton; down = (event->down != 0) || ((event->buttons & downflag) != 0); break + CHECK_MOUSE_BUTTON(0, 1, LEFT); + CHECK_MOUSE_BUTTON(1, 4, MIDDLE); + CHECK_MOUSE_BUTTON(2, 2, RIGHT); + CHECK_MOUSE_BUTTON(3, 8, X1); + CHECK_MOUSE_BUTTON(4, 16, X2); #undef CHECK_MOUSE_BUTTON default: sdl_button = 0; break; }