|
@@ -6822,17 +6822,8 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|
|
LogSetNextTextDecoration(">", NULL);
|
|
|
}
|
|
|
|
|
|
- if (draw_tree_lines && (window->DC.TreeHasStackDataDepthMask & (1 << (window->DC.TreeDepth - 1))))
|
|
|
- {
|
|
|
- // Draw horizontal line from our parent node
|
|
|
- ImGuiTreeNodeStackData* parent_data = &g.TreeNodeStack.Data[g.TreeNodeStack.Size - 1];
|
|
|
- float x1 = parent_data->DrawLinesX1 + ImTrunc(g.FontSize * 0.5f + g.Style.FramePadding.x); // GetTreeNodeToLabelSpacing() * 0.5f
|
|
|
- float x2 = text_pos.x - text_offset_x;
|
|
|
- float y = text_pos.y + ImTrunc(g.FontSize * 0.5f);
|
|
|
- parent_data->DrawLinesY2 = ImMax(parent_data->DrawLinesY2, y);
|
|
|
- if (x1 < x2)
|
|
|
- window->DrawList->AddLine(ImVec2(x1, y), ImVec2(x2, y), GetColorU32(ImGuiCol_TreeLines), g.Style.TreeLinesSize);
|
|
|
- }
|
|
|
+ if (draw_tree_lines)
|
|
|
+ TreeNodeDrawLineToChildNode(ImVec2(text_pos.x - text_offset_x, text_pos.y + g.FontSize * 0.5f));
|
|
|
|
|
|
if (span_all_columns && !span_all_columns_label)
|
|
|
TablePopBackgroundChannel();
|
|
@@ -6856,6 +6847,23 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|
|
return is_open;
|
|
|
}
|
|
|
|
|
|
+// Draw horizontal line from our parent node
|
|
|
+// This is only called for visible child nodes so we are not too fussy anymore about performances
|
|
|
+void ImGui::TreeNodeDrawLineToChildNode(const ImVec2& target_pos)
|
|
|
+{
|
|
|
+ ImGuiContext& g = *GImGui;
|
|
|
+ ImGuiWindow* window = g.CurrentWindow;
|
|
|
+ if ((window->DC.TreeHasStackDataDepthMask & (1 << (window->DC.TreeDepth - 1))) == 0)
|
|
|
+ return;
|
|
|
+
|
|
|
+ ImGuiTreeNodeStackData* parent_data = &g.TreeNodeStack.Data[g.TreeNodeStack.Size - 1];
|
|
|
+ float x1 = parent_data->DrawLinesX1 + ImTrunc(g.FontSize * 0.5f + g.Style.FramePadding.x); // GetTreeNodeToLabelSpacing() * 0.5f
|
|
|
+ float y = ImTrunc(target_pos.y);
|
|
|
+ parent_data->DrawLinesY2 = ImMax(parent_data->DrawLinesY2, y);
|
|
|
+ if (x1 < target_pos.x)
|
|
|
+ window->DrawList->AddLine(ImVec2(x1, y), ImVec2(target_pos.x, y), GetColorU32(ImGuiCol_TreeLines), g.Style.TreeLinesSize);
|
|
|
+}
|
|
|
+
|
|
|
void ImGui::TreePush(const char* str_id)
|
|
|
{
|
|
|
ImGuiWindow* window = GetCurrentWindow();
|