|
@@ -431,6 +431,8 @@ CODE
|
|
|
You can read releases logs https://github.com/ocornut/imgui/releases for more details.
|
|
|
|
|
|
- 2024/08/22 (1.91.1) - moved some functions from ImGuiIO to ImGuiPlatformIO structure:
|
|
|
+ - io.GetClipboardTextFn -> platform_io.Platform_GetClipboardTextFn + changed 'void* user_data' to 'ImGuiContext* ctx'. Pull your user data from platform_io.ClipboardUserData.
|
|
|
+ - io.SetClipboardTextFn -> platform_io.Platform_SetClipboardTextFn + same as above line.
|
|
|
- io.PlatformOpenInShellFn -> platform_io.Platform_OpenInShellFn (#7660)
|
|
|
- io.PlatformSetImeDataFn -> platform_io.Platform_SetImeDataFn
|
|
|
- io.PlatformLocaleDecimalPoint -> platform_io.Platform_LocaleDecimalPoint (#7389, #6719, #2278)
|
|
@@ -1146,9 +1148,9 @@ static void WindowSettingsHandler_ReadLine(ImGuiContext*, ImGuiSetti
|
|
|
static void WindowSettingsHandler_ApplyAll(ImGuiContext*, ImGuiSettingsHandler*);
|
|
|
static void WindowSettingsHandler_WriteAll(ImGuiContext*, ImGuiSettingsHandler*, ImGuiTextBuffer* buf);
|
|
|
|
|
|
-// Platform Dependents default implementation for IO functions
|
|
|
-static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx);
|
|
|
-static void SetClipboardTextFn_DefaultImpl(void* user_data_ctx, const char* text);
|
|
|
+// Platform Dependents default implementation for ImGuiPlatformIO functions
|
|
|
+static const char* Platform_GetClipboardTextFn_DefaultImpl(ImGuiContext* ctx);
|
|
|
+static void Platform_SetClipboardTextFn_DefaultImpl(ImGuiContext* ctx, const char* text);
|
|
|
static void Platform_SetImeDataFn_DefaultImpl(ImGuiContext* ctx, ImGuiViewport* viewport, ImGuiPlatformImeData* data);
|
|
|
static bool Platform_OpenInShellFn_DefaultImpl(ImGuiContext* ctx, const char* path);
|
|
|
|
|
@@ -3806,10 +3808,9 @@ void ImGui::Initialize()
|
|
|
// Setup default localization table
|
|
|
LocalizeRegisterEntries(GLocalizationEntriesEnUS, IM_ARRAYSIZE(GLocalizationEntriesEnUS));
|
|
|
|
|
|
- // Setup default platform clipboard/IME handlers.
|
|
|
- g.IO.GetClipboardTextFn = GetClipboardTextFn_DefaultImpl; // Platform dependent default implementations
|
|
|
- g.IO.SetClipboardTextFn = SetClipboardTextFn_DefaultImpl;
|
|
|
- g.IO.ClipboardUserData = (void*)&g; // Default implementation use the ImGuiContext as user data (ideally those would be arguments to the function)
|
|
|
+ // Setup default ImGuiPlatformIO clipboard/IME handlers.
|
|
|
+ g.PlatformIO.Platform_GetClipboardTextFn = Platform_GetClipboardTextFn_DefaultImpl; // Platform dependent default implementations
|
|
|
+ g.PlatformIO.Platform_SetClipboardTextFn = Platform_SetClipboardTextFn_DefaultImpl;
|
|
|
g.PlatformIO.Platform_OpenInShellFn = Platform_OpenInShellFn_DefaultImpl;
|
|
|
g.PlatformIO.Platform_SetImeDataFn = Platform_SetImeDataFn_DefaultImpl;
|
|
|
|
|
@@ -4451,14 +4452,14 @@ void ImGui::DebugAllocHook(ImGuiDebugAllocInfo* info, int frame_count, void* ptr
|
|
|
const char* ImGui::GetClipboardText()
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- return g.IO.GetClipboardTextFn ? g.IO.GetClipboardTextFn(g.IO.ClipboardUserData) : "";
|
|
|
+ return g.PlatformIO.Platform_GetClipboardTextFn ? g.PlatformIO.Platform_GetClipboardTextFn(&g) : "";
|
|
|
}
|
|
|
|
|
|
void ImGui::SetClipboardText(const char* text)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- if (g.IO.SetClipboardTextFn)
|
|
|
- g.IO.SetClipboardTextFn(g.IO.ClipboardUserData, text);
|
|
|
+ if (g.PlatformIO.Platform_SetClipboardTextFn != NULL)
|
|
|
+ g.PlatformIO.Platform_SetClipboardTextFn(&g, text);
|
|
|
}
|
|
|
|
|
|
const char* ImGui::GetVersion()
|
|
@@ -10096,6 +10097,14 @@ static void ImGui::ErrorCheckNewFrameSanityChecks()
|
|
|
if ((g.IO.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) && g.IO.BackendUsingLegacyKeyArrays == 1)
|
|
|
IM_ASSERT(g.IO.KeyMap[ImGuiKey_Space] != -1 && "ImGuiKey_Space is not mapped, required for keyboard navigation.");
|
|
|
#endif
|
|
|
+
|
|
|
+ // Remap legacy clipboard handlers (OBSOLETED in 1.91.1, August 2024)
|
|
|
+#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
|
|
+ if (g.IO.GetClipboardTextFn != NULL && (g.PlatformIO.Platform_GetClipboardTextFn == NULL || g.PlatformIO.Platform_GetClipboardTextFn == Platform_GetClipboardTextFn_DefaultImpl))
|
|
|
+ g.PlatformIO.Platform_GetClipboardTextFn = [](ImGuiContext* ctx) { return ctx->IO.GetClipboardTextFn(ctx->IO.ClipboardUserData); };
|
|
|
+ if (g.IO.SetClipboardTextFn != NULL && (g.PlatformIO.Platform_SetClipboardTextFn == NULL || g.PlatformIO.Platform_SetClipboardTextFn == Platform_SetClipboardTextFn_DefaultImpl))
|
|
|
+ g.PlatformIO.Platform_SetClipboardTextFn = [](ImGuiContext* ctx, const char* text) { return ctx->IO.SetClipboardTextFn(ctx->IO.ClipboardUserData, text); };
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
static void ImGui::ErrorCheckEndFrameSanityChecks()
|
|
@@ -14347,9 +14356,9 @@ static void ImGui::UpdateViewportsNewFrame()
|
|
|
|
|
|
// Win32 clipboard implementation
|
|
|
// We use g.ClipboardHandlerData for temporary storage to ensure it is freed on Shutdown()
|
|
|
-static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx)
|
|
|
+static const char* Platform_GetClipboardTextFn_DefaultImpl(ImGuiContext* ctx)
|
|
|
{
|
|
|
- ImGuiContext& g = *(ImGuiContext*)user_data_ctx;
|
|
|
+ ImGuiContext& g = *ctx;
|
|
|
g.ClipboardHandlerData.clear();
|
|
|
if (!::OpenClipboard(NULL))
|
|
|
return NULL;
|
|
@@ -14370,7 +14379,7 @@ static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx)
|
|
|
return g.ClipboardHandlerData.Data;
|
|
|
}
|
|
|
|
|
|
-static void SetClipboardTextFn_DefaultImpl(void*, const char* text)
|
|
|
+static void Platform_SetClipboardTextFn_DefaultImpl(ImGuiContext*, const char* text)
|
|
|
{
|
|
|
if (!::OpenClipboard(NULL))
|
|
|
return;
|
|
@@ -14397,7 +14406,7 @@ static PasteboardRef main_clipboard = 0;
|
|
|
|
|
|
// OSX clipboard implementation
|
|
|
// If you enable this you will need to add '-framework ApplicationServices' to your linker command-line!
|
|
|
-static void SetClipboardTextFn_DefaultImpl(void*, const char* text)
|
|
|
+static void Platform_SetClipboardTextFn_DefaultImpl(ImGuiContext*, const char* text)
|
|
|
{
|
|
|
if (!main_clipboard)
|
|
|
PasteboardCreate(kPasteboardClipboard, &main_clipboard);
|
|
@@ -14410,9 +14419,9 @@ static void SetClipboardTextFn_DefaultImpl(void*, const char* text)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx)
|
|
|
+static const char* Platform_GetClipboardTextFn_DefaultImpl(ImGuiContext* ctx)
|
|
|
{
|
|
|
- ImGuiContext& g = *(ImGuiContext*)user_data_ctx;
|
|
|
+ ImGuiContext& g = *ctx;
|
|
|
if (!main_clipboard)
|
|
|
PasteboardCreate(kPasteboardClipboard, &main_clipboard);
|
|
|
PasteboardSynchronize(main_clipboard);
|
|
@@ -14446,15 +14455,15 @@ static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx)
|
|
|
#else
|
|
|
|
|
|
// Local Dear ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers.
|
|
|
-static const char* GetClipboardTextFn_DefaultImpl(void* user_data_ctx)
|
|
|
+static const char* Platform_GetClipboardTextFn_DefaultImpl(ImGuiContext* ctx)
|
|
|
{
|
|
|
- ImGuiContext& g = *(ImGuiContext*)user_data_ctx;
|
|
|
+ ImGuiContext& g = *ctx;
|
|
|
return g.ClipboardHandlerData.empty() ? NULL : g.ClipboardHandlerData.begin();
|
|
|
}
|
|
|
|
|
|
-static void SetClipboardTextFn_DefaultImpl(void* user_data_ctx, const char* text)
|
|
|
+static void Platform_SetClipboardTextFn_DefaultImpl(ImGuiContext* ctx, const char* text)
|
|
|
{
|
|
|
- ImGuiContext& g = *(ImGuiContext*)user_data_ctx;
|
|
|
+ ImGuiContext& g = *ctx;
|
|
|
g.ClipboardHandlerData.clear();
|
|
|
const char* text_end = text + strlen(text);
|
|
|
g.ClipboardHandlerData.resize((int)(text_end - text) + 1);
|