@@ -15514,18 +15514,24 @@ void ImGui::DockNodeEndAmendTabBar()
15514
15514
End();
15515
15515
}
15516
15516
15517
- static bool IsDockNodeTitleBarHighlighted(ImGuiDockNode* node, ImGuiDockNode* root_node, ImGuiWindow* host_window )
15517
+ static bool IsDockNodeTitleBarHighlighted(ImGuiDockNode* node, ImGuiDockNode* root_node)
15518
15518
{
15519
15519
// CTRL+Tab highlight (only highlighting leaf node, not whole hierarchy)
15520
15520
ImGuiContext& g = *GImGui;
15521
15521
if (g.NavWindowingTarget)
15522
15522
return (g.NavWindowingTarget->DockNode == node);
15523
15523
15524
15524
// FIXME-DOCKING: May want alternative to treat central node void differently? e.g. if (g.NavWindow == host_window)
15525
- if (g.NavWindow && g.NavWindow->RootWindowForTitleBarHighlight == host_window->RootWindowDockTree && root_node->LastFocusedNodeId == node->ID)
15526
- for (ImGuiDockNode* parent_node = g.NavWindow->RootWindow->DockNode; parent_node != NULL; parent_node = parent_node->HostWindow ? parent_node->HostWindow->RootWindow->DockNode : NULL)
15525
+ if (g.NavWindow && root_node->LastFocusedNodeId == node->ID)
15526
+ {
15527
+ // FIXME: This could all be backed in RootWindowForTitleBarHighlight? Probably need to reorganize for both dock nodes + other RootWindowForTitleBarHighlight users (not-node)
15528
+ ImGuiWindow* parent_window = g.NavWindow->RootWindow;
15529
+ while (parent_window->Flags & ImGuiWindowFlags_ChildMenu)
15530
+ parent_window = parent_window->ParentWindow->RootWindow;
15531
+ for (ImGuiDockNode* parent_node = parent_window->DockNode; parent_node != NULL; parent_node = parent_node->HostWindow ? parent_node->HostWindow->RootWindow->DockNode : NULL)
15527
15532
if ((parent_node = ImGui::DockNodeGetRootNode(parent_node)) == root_node)
15528
15533
return true;
15534
+ }
15529
15535
return false;
15530
15536
}
15531
15537
@@ -15544,7 +15550,7 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w
15544
15550
// Decide if we should use a focused title bar color
15545
15551
bool is_focused = false;
15546
15552
ImGuiDockNode* root_node = DockNodeGetRootNode(node);
15547
- if (IsDockNodeTitleBarHighlighted(node, root_node, host_window ))
15553
+ if (IsDockNodeTitleBarHighlighted(node, root_node))
15548
15554
is_focused = true;
15549
15555
15550
15556
// Hidden tab bar will show a triangle on the upper-left (in Begin)
0 commit comments