diff --git a/backends/imgui_impl_glfw.cpp b/backends/imgui_impl_glfw.cpp index cb46abbb3cf9..53139f227fc0 100644 --- a/backends/imgui_impl_glfw.cpp +++ b/backends/imgui_impl_glfw.cpp @@ -579,7 +579,7 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw io.GetClipboardTextFn = ImGui_ImplGlfw_GetClipboardText; io.ClipboardUserData = bd->Window; #ifdef __EMSCRIPTEN__ - io.PlatformOpenInShellFn = [](ImGuiContext*, const char* url) { ImGui_ImplGlfw_EmscriptenOpenURL(url); }; + io.PlatformOpenInShellFn = [](ImGuiContext*, const char* url) { ImGui_ImplGlfw_EmscriptenOpenURL(url); return true; }; #endif // Create mouse cursors diff --git a/backends/imgui_impl_sdl2.cpp b/backends/imgui_impl_sdl2.cpp index 1cde227e2b81..15db0a843a8f 100644 --- a/backends/imgui_impl_sdl2.cpp +++ b/backends/imgui_impl_sdl2.cpp @@ -441,7 +441,7 @@ static bool ImGui_ImplSDL2_Init(SDL_Window* window, SDL_Renderer* renderer, void io.ClipboardUserData = nullptr; io.PlatformSetImeDataFn = ImGui_ImplSDL2_PlatformSetImeData; #ifdef __EMSCRIPTEN__ - io.PlatformOpenInShellFn = [](ImGuiContext*, const char* url) { ImGui_ImplSDL2_EmscriptenOpenURL(url); }; + io.PlatformOpenInShellFn = [](ImGuiContext*, const char* url) { ImGui_ImplSDL2_EmscriptenOpenURL(url); return true; }; #endif // Gamepad handling diff --git a/imgui.cpp b/imgui.cpp index 748cbe426814..e0294b3e4248 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -1131,7 +1131,7 @@ static void WindowSettingsHandler_WriteAll(ImGuiContext*, ImGuiSetti static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx); static void SetClipboardTextFn_DefaultImpl(void* user_data_ctx, const char* text); static void PlatformSetImeDataFn_DefaultImpl(ImGuiContext* ctx, ImGuiViewport* viewport, ImGuiPlatformImeData* data); -static void PlatformOpenInShellFn_DefaultImpl(ImGuiContext* ctx, const char* path); +static bool PlatformOpenInShellFn_DefaultImpl(ImGuiContext* ctx, const char* path); namespace ImGui { @@ -14358,12 +14358,12 @@ static void SetClipboardTextFn_DefaultImpl(void* user_data_ctx, const char* text #ifdef _MSC_VER #pragma comment(lib, "shell32") #endif -static void PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char* path) +static bool PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char* path) { - ::ShellExecuteA(NULL, "open", path, NULL, NULL, SW_SHOWDEFAULT); + return (INT_PTR)::ShellExecuteA(NULL, "open", path, NULL, NULL, SW_SHOWDEFAULT) > 32; } #elif !defined(IMGUI_DISABLE_DEFAULT_SHELL_FUNCTIONS) -static void PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char* path) +static bool PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char* path) { #if __APPLE__ const char* open_executable = "open"; @@ -14372,10 +14372,10 @@ static void PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char* path) #endif ImGuiTextBuffer buf; buf.appendf("%s \"%s\"", open_executable, path); - system(buf.c_str()); + return system(buf.c_str()) != -1; } #else -static void PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char*) {} +static bool PlatformOpenInShellFn_DefaultImpl(ImGuiContext*, const char*) { return false; } #endif // Default shell handlers //----------------------------------------------------------------------------- diff --git a/imgui.h b/imgui.h index a1c8ec2c579d..b1796242ba1c 100644 --- a/imgui.h +++ b/imgui.h @@ -28,7 +28,7 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #define IMGUI_VERSION "1.91.0 WIP" -#define IMGUI_VERSION_NUM 19092 +#define IMGUI_VERSION_NUM 19093 #define IMGUI_HAS_TABLE /* @@ -2245,7 +2245,7 @@ struct ImGuiIO // Optional: Open link/folder/file in OS Shell // (default to use ShellExecuteA() on Windows, system() on Linux/Mac) - void (*PlatformOpenInShellFn)(ImGuiContext* ctx, const char* path); + bool (*PlatformOpenInShellFn)(ImGuiContext* ctx, const char* path); void* PlatformOpenInShellUserData; // Optional: Notify OS Input Method Editor of the screen position of your cursor for text input position (e.g. when using Japanese/Chinese IME on Windows)