diff --git a/backends/imgui_impl_emscripten.cpp b/backends/imgui_impl_emscripten.cpp index 6aa3e5677..03a682472 100644 --- a/backends/imgui_impl_emscripten.cpp +++ b/backends/imgui_impl_emscripten.cpp @@ -4,6 +4,7 @@ // // CHANGELOG // (minor and older changes stripped away, please see git history for details) +// 2026-09-06: Inputs: Exposed mouse button and key translation functions as public. // 2026-09-06: DPI: Added ImGui_ImplEmscripten_GetCssToImGuiScale() getter. // 2026-09-05: DPI: Use the canvas framebuffer dimensions for display sizing and exact per-axis mouse coordinate scaling. // 2026-09-04: Replaced TargetDevicePixelRatio global with an Init() parameter and runtime setter. @@ -28,11 +29,6 @@ extern ImGuiID ImHashStr(char const* data, size_t data_size = 0, ImGuiID seed = 0); // Declared in imgui_internal.h. -// W3C UI Events KeyboardEvent.code translation helpers - -static ImGuiKey ImGui_ImplEmscripten_TranslateKey(char const* emscripten_key); -static constexpr ImGuiMouseButton ImGui_ImplEmscripten_TranslateMouseButton(unsigned short emscripten_button) __attribute__((__const__)); - // Browser cursor helpers, adapted from https://github.com/Armchair-Software/emscripten-browser-cursor enum ImGui_ImplEmscripten_Cursor @@ -606,7 +602,7 @@ static void ImGui_ImplEmscripten_SetBrowserCursor(char const* new_cursor) }, new_cursor); } -static constexpr ImGuiMouseButton ImGui_ImplEmscripten_TranslateMouseButton(unsigned short emscripten_button) +ImGuiMouseButton ImGui_ImplEmscripten_TranslateMouseButton(unsigned short emscripten_button) { // Translate an emscripten-provided integer describing a mouse button to an imgui mouse button if (emscripten_button == 1) return ImGuiMouseButton_Middle; // 1 = middle mouse button @@ -841,7 +837,7 @@ static ImGuiStorage const& ImGui_ImplEmscripten_GetKeyTranslationStorage() return storage; } -static ImGuiKey ImGui_ImplEmscripten_TranslateKey(char const* emscripten_key) +ImGuiKey ImGui_ImplEmscripten_TranslateKey(const char* emscripten_key) { // Translate a W3C KeyboardEvent.code string into an ImGuiKey. if (emscripten_key == nullptr || emscripten_key[0] == '\0') return ImGuiKey_None; diff --git a/backends/imgui_impl_emscripten.h b/backends/imgui_impl_emscripten.h index 357017517..b7a8a707e 100644 --- a/backends/imgui_impl_emscripten.h +++ b/backends/imgui_impl_emscripten.h @@ -50,6 +50,10 @@ IMGUI_IMPL_API void ImGui_ImplEmscripten_SetTargetDevicePixelRatio(float target_ // Return the scale used to convert browser CSS pixel coordinates to Dear ImGui coordinates. Valid after Init(). IMGUI_IMPL_API ImVec2 ImGui_ImplEmscripten_GetCssToImGuiScale(); +// Input translation helpers. +IMGUI_IMPL_API ImGuiMouseButton ImGui_ImplEmscripten_TranslateMouseButton(unsigned short emscripten_button); +IMGUI_IMPL_API ImGuiKey ImGui_ImplEmscripten_TranslateKey(const char* emscripten_key); + // Shut down the Emscripten backend. This unsets all Emscripten input callbacks set by Init. // Note it'll also unset any Emscripten input callbacks set elsewhere in the program! // Note also there is no obligation to ever call this, unless you intend to reset the backend (i.e. with ImGui::DestroyContext()).