|
@@ -21,6 +21,7 @@
|
|
|
|
|
|
// CHANGELOG
|
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
|
+// 2024-07-02: Emscripten: Added io.PlatformOpenInShellFn() handler for Emscripten versions.
|
|
|
// 2024-07-02: Update for io.SetPlatformImeDataFn() -> io.PlatformSetImeDataFn() renaming in main library.
|
|
|
// 2024-02-14: Inputs: Handle gamepad disconnection. Added ImGui_ImplSDL2_SetGamepadMode().
|
|
|
// 2023-10-05: Inputs: Added support for extra ImGuiKey values: F13 to F24 function keys, app back/forward keys.
|
|
@@ -91,9 +92,12 @@
|
|
|
// SDL
|
|
|
#include <SDL.h>
|
|
|
#include <SDL_syswm.h>
|
|
|
-#if defined(__APPLE__)
|
|
|
+#ifdef __APPLE__
|
|
|
#include <TargetConditionals.h>
|
|
|
#endif
|
|
|
+#ifdef __EMSCRIPTEN__
|
|
|
+#include <emscripten/em_js.h>
|
|
|
+#endif
|
|
|
|
|
|
#if SDL_VERSION_ATLEAST(2,0,4) && !defined(__EMSCRIPTEN__) && !defined(__ANDROID__) && !(defined(__APPLE__) && TARGET_OS_IOS) && !defined(__amigaos4__)
|
|
|
#define SDL_HAS_CAPTURE_AND_GLOBAL_MOUSE 1
|
|
@@ -400,6 +404,10 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event)
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+#ifdef __EMSCRIPTEN__
|
|
|
+EM_JS(void, ImGui_ImplSDL2_EmscriptenOpenURL, (char const* url), { url = url ? UTF8ToString(url) : null; if (url) window.open(url, '_blank'); });
|
|
|
+#endif
|
|
|
+
|
|
|
static bool ImGui_ImplSDL2_Init(SDL_Window* window, SDL_Renderer* renderer, void* sdl_gl_context)
|
|
|
{
|
|
|
ImGuiIO& io = ImGui::GetIO();
|
|
@@ -432,6 +440,9 @@ static bool ImGui_ImplSDL2_Init(SDL_Window* window, SDL_Renderer* renderer, void
|
|
|
io.GetClipboardTextFn = ImGui_ImplSDL2_GetClipboardText;
|
|
|
io.ClipboardUserData = nullptr;
|
|
|
io.PlatformSetImeDataFn = ImGui_ImplSDL2_PlatformSetImeData;
|
|
|
+#ifdef __EMSCRIPTEN__
|
|
|
+ io.PlatformOpenInShellFn = [](ImGuiContext*, const char* url) { ImGui_ImplSDL2_EmscriptenOpenURL(url); };
|
|
|
+#endif
|
|
|
|
|
|
// Gamepad handling
|
|
|
bd->GamepadMode = ImGui_ImplSDL2_GamepadMode_AutoFirst;
|