From 75a4a48d1fdb5fb80045b4be6ea81a505e02af84 Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 26 Aug 2025 16:19:08 +0200 Subject: [PATCH] Internals: extracted ImHashSkipUncontributingPrefix() out of CreateNewWindowSettings() and added note about it. --- imgui.cpp | 16 ++++++++++------ imgui_internal.h | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 0d4bd99a9..4207012ed 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2387,6 +2387,14 @@ ImGuiID ImHashStr(const char* data_p, size_t data_size, ImGuiID seed) return ~crc; } +// Skip to the "###" marker if any. We don't skip past to match the behavior of GetID() +const char* ImHashSkipUncontributingPrefix(const char* label) +{ + if (const char* p = strstr(label, "###")) // FIXME: Should loop. + label = p; + return label; +} + //----------------------------------------------------------------------------- // [SECTION] MISC HELPERS/UTILITIES (File functions) //----------------------------------------------------------------------------- @@ -15259,13 +15267,9 @@ ImGuiWindowSettings* ImGui::CreateNewWindowSettings(const char* name) { ImGuiContext& g = *GImGui; + // Preserve the full string when ConfigDebugVerboseIniSettings is set to make .ini inspection easier. if (g.IO.ConfigDebugIniSettings == false) - { - // Skip to the "###" marker if any. We don't skip past to match the behavior of GetID() - // Preserve the full string when ConfigDebugVerboseIniSettings is set to make .ini inspection easier. - if (const char* p = strstr(name, "###")) - name = p; - } + name = ImHashSkipUncontributingPrefix(name); const size_t name_len = ImStrlen(name); // Allocate chunk diff --git a/imgui_internal.h b/imgui_internal.h index 1b21a8fcd..3085648dd 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -367,6 +367,7 @@ extern IMGUI_API ImGuiContext* GImGui; // Current implicit context pointer // Helpers: Hashing IMGUI_API ImGuiID ImHashData(const void* data, size_t data_size, ImGuiID seed = 0); IMGUI_API ImGuiID ImHashStr(const char* data, size_t data_size = 0, ImGuiID seed = 0); +IMGUI_API const char* ImHashSkipUncontributingPrefix(const char* label); // Helpers: Sorting #ifndef ImQsort