瀏覽代碼

Docking: Fixed restoring of tab order within a dockspace or a split node.

(tests in "docking_tab_order")
ocornut 4 年之前
父節點
當前提交
539de4387b
共有 2 個文件被更改,包括 3 次插入2 次删除
  1. 1 0
      docs/CHANGELOG.txt
  2. 2 2
      imgui.cpp

+ 1 - 0
docs/CHANGELOG.txt

@@ -137,6 +137,7 @@ Docking Branch:
 - Docking: DockSpace() returns its node ID.
 - Docking: Dockspace() never draws a background. (#3924)
 - Docking: undocking nodes/windows covering most of the monitor max their size down to 90% to ease further manipulations.
+- Docking: Fixed restoring of tab order within a dockspace or a split node.
 - Viewports: Hotfix for crash in monitor array access, caused by 4b9bc4902. (#3967)
 - Backends, Viewports: GLFW: Add a workaround for stuck keys after closing a GLFW window (#3837).
 - Backends, Viewports: Vulkan: Rebuild swapchain on VK_SUBOPTIMAL_KHR. (#3881)

+ 2 - 2
imgui.cpp

@@ -15464,9 +15464,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 has been visible once.
+    // Save new dock order only if the window has been visible once already
     // 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)
+    if (node->TabBar && window->WasActive)
         window->DockOrder = (short)DockNodeGetTabOrder(window);
 
     if ((node->WantCloseAll || node->WantCloseTabId == window->ID) && p_open != NULL)