From f20725eada0adbedc5c137cc22a54ce8e11fc929 Mon Sep 17 00:00:00 2001 From: Tom Watson Date: Wed, 13 Mar 2019 10:02:04 -0700 Subject: [PATCH] Docking: Fixed an issue where windows docked into a node that's part of their dockspace wouldn't recover their order correctly after init. (#2109) (It only worked on floating dock node for the accidental reason that BeginDocked would generally early out on the first frame) --- imgui.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 404b91ce..93f229c3 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -13507,8 +13507,9 @@ void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open) else window->Flags &= ~ImGuiWindowFlags_NoTitleBar; // Clear the NoTitleBar flag in case the user set it: confusingly enough we need a title bar height so we are correctly offset, but it won't be displayed! - // Save new dock order only if the tab bar is active - if (node->TabBar) + // Save new dock order only if the tab bar has been visible once. + // This allows multiple windows to be created in the same frame and have their respective dock orders preserved. + if (node->TabBar && node->TabBar->CurrFrameVisible != -1) window->DockOrder = (short)DockNodeGetTabOrder(window); if ((node->WantCloseAll || node->WantCloseTabID == window->ID) && p_open != NULL)