Docking: Fixed a bug where the tab bar of a hidden dockspace would keep requesting focus. (#2960)

This commit is contained in:
omar 2020-01-02 22:50:56 +01:00
parent c163b856d7
commit 3b1b5266e5

View File

@ -13703,6 +13703,12 @@ void ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags fla
if (!(g.IO.ConfigFlags & ImGuiConfigFlags_DockingEnable)) if (!(g.IO.ConfigFlags & ImGuiConfigFlags_DockingEnable))
return; return;
// Early out if parent window is hidden/collapsed
// This is faster but also DockNodeUpdateTabBar() relies on TabBarLayout() running (which won't if SkipItems=true) to set NextSelectedTabId = 0). See #2960.
// If for whichever reason this is causing problem we would need to ensure that DockNodeUpdateTabBar() ends up clearing NextSelectedTabId even if SkipItems=true.
if (window->SkipItems)
flags |= ImGuiDockNodeFlags_KeepAliveOnly;
IM_ASSERT((flags & ImGuiDockNodeFlags_DockSpace) == 0); IM_ASSERT((flags & ImGuiDockNodeFlags_DockSpace) == 0);
ImGuiDockNode* node = DockContextFindNodeByID(ctx, id); ImGuiDockNode* node = DockContextFindNodeByID(ctx, id);
if (!node) if (!node)