From 8ee85137d886c3bbe2dbe38eb24d65178c3994e0 Mon Sep 17 00:00:00 2001 From: ocornut Date: Fri, 20 Oct 2023 15:27:25 +0200 Subject: [PATCH] BeginChild(): Internal name used by child windows now omits the hash/id if the child window is submitted in root of id stack of parent window. # Conflicts: # docs/CHANGELOG.txt # imgui.h --- docs/CHANGELOG.txt | 3 +++ imgui.cpp | 4 +++- imgui.h | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index c0039a88..aa0dcd1f 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -71,6 +71,9 @@ Other changes: Previously was inconsistent and only enabled when stepping through a non-input item. (#6802, #3092, #5759, #787) - Windows: + - BeginChild(): Internal name used by child windows now omits the hash/id if the child + window is submitted in root of id stack of parent window. Makes debugging/metrics easier + and shorter to read in many cases. - Popups: clarified meaning of 'p_open != NULL' in BeginPopupModal() + set back user value to false when popup is closed in ways other than clicking the close button. (#6900) - Double-clicking lower-left resize grip auto-resize (like lower-rightone). diff --git a/imgui.cpp b/imgui.cpp index 772d0a17..a11f2281 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -5444,7 +5444,9 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, b // Build up name. If you need to append to a same child from multiple location in the ID stack, use BeginChild(ImGuiID id) with a stable value. const char* temp_window_name; - if (name) + if (name && parent_window->IDStack.back() == parent_window->ID) + ImFormatStringToTempBuffer(&temp_window_name, NULL, "%s/%s", parent_window->Name, name); // May omit ID if in root of ID stack + else if (name) ImFormatStringToTempBuffer(&temp_window_name, NULL, "%s/%s_%08X", parent_window->Name, name, id); else ImFormatStringToTempBuffer(&temp_window_name, NULL, "%s/%08X", parent_window->Name, id); diff --git a/imgui.h b/imgui.h index 2c691aec..4fbce76a 100644 --- a/imgui.h +++ b/imgui.h @@ -24,7 +24,7 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #define IMGUI_VERSION "1.90 WIP" -#define IMGUI_VERSION_NUM 18995 +#define IMGUI_VERSION_NUM 18996 #define IMGUI_HAS_TABLE /*