|
@@ -10132,7 +10132,7 @@ static void ImGui::DockNodeRemoveWindow(ImGuiDockNode* node, ImGuiWindow* window
|
|
ImGuiDockContext* ctx = g.DockContext;
|
|
ImGuiDockContext* ctx = g.DockContext;
|
|
IM_ASSERT(window->DockNode == node);
|
|
IM_ASSERT(window->DockNode == node);
|
|
//IM_ASSERT(window->RootWindow == node->HostWindow);
|
|
//IM_ASSERT(window->RootWindow == node->HostWindow);
|
|
- IM_ASSERT(window->LastFrameActive < g.FrameCount);
|
|
|
|
|
|
+ //IM_ASSERT(window->LastFrameActive < g.FrameCount); // We may call this from Begin()
|
|
IM_ASSERT(save_dock_id == 0 || save_dock_id == node->ID);
|
|
IM_ASSERT(save_dock_id == 0 || save_dock_id == node->ID);
|
|
|
|
|
|
window->DockNode = NULL;
|
|
window->DockNode = NULL;
|
|
@@ -11385,8 +11385,12 @@ void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open)
|
|
ImGuiDockNode* root_node = DockNodeGetRootNode(dock_node);
|
|
ImGuiDockNode* root_node = DockNodeGetRootNode(dock_node);
|
|
if (root_node->LastFrameAlive < g.FrameCount)
|
|
if (root_node->LastFrameAlive < g.FrameCount)
|
|
{
|
|
{
|
|
- root_node->IsExplicitRoot = false;
|
|
|
|
- window->DockIsActive = false;
|
|
|
|
|
|
+ DockContextProcessUndock(g.DockContext, window);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ window->DockIsActive = true;
|
|
|
|
+ window->DockTabIsVisible = false;
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -11414,12 +11418,12 @@ void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open)
|
|
g.NextWindowData.PosUndock = false; // Cancel implicit undocking of SetNextWindowPos()
|
|
g.NextWindowData.PosUndock = false; // Cancel implicit undocking of SetNextWindowPos()
|
|
|
|
|
|
window->DockIsActive = true;
|
|
window->DockIsActive = true;
|
|
|
|
+ window->DockTabIsVisible = false;
|
|
if (dock_node->Flags & ImGuiDockSpaceFlags_KeepAliveOnly)
|
|
if (dock_node->Flags & ImGuiDockSpaceFlags_KeepAliveOnly)
|
|
- {
|
|
|
|
- window->DockTabIsVisible = false;
|
|
|
|
return;
|
|
return;
|
|
- }
|
|
|
|
- window->DockTabIsVisible = (dock_node->TabBar && dock_node->TabBar->VisibleTabId == window->ID);
|
|
|
|
|
|
+
|
|
|
|
+ if (dock_node->TabBar && dock_node->TabBar->VisibleTabId == window->ID)
|
|
|
|
+ window->DockTabIsVisible = true;
|
|
|
|
|
|
// When we are about to select this tab (which will only be visible on the _next frame_), flag it with a non-zero HiddenFramesForResize.
|
|
// When we are about to select this tab (which will only be visible on the _next frame_), flag it with a non-zero HiddenFramesForResize.
|
|
// This will have the important effect of actually returning true in Begin() and not setting SkipItems, allowing an earlier submission of the window contents.
|
|
// This will have the important effect of actually returning true in Begin() and not setting SkipItems, allowing an earlier submission of the window contents.
|