public unsafe void Draw()
{
ImGui.PushID(ID.ToString());
if (ImGui.Selectable($"##{ID}", IsSelected))
{
bool isCtrlPressed = ImGuiNative.igGetIO()->KeyCtrl == 1;
if (!isCtrlPressed && IsSelected || IsCollapsed)
{
IsCollapsed = !IsCollapsed;
}
if (IsSelected && isCtrlPressed)
{
ListView.SetSelectedNode(null);
}
else
{
ListView.SetSelectedNode(this);
}
}
ImGui.PopID();
if (Children.Any())
{
ImGui.SetNextTreeNodeOpened(!IsCollapsed);
PreDrawNodeLabel();
ImGui.SameLine();
if (ImGui.TreeNode(Label))
{
PostDrawNodeLabel();
foreach (IListNode node in Children)
{
node.Draw();
}
ImGui.TreePop();
}
if (IsCollapsed)
{
PostDrawNodeLabel();
}
}
else
{
PreDrawNodeLabel();
ImGui.SameLine();
ImGui.Text(Label);
PostDrawNodeLabel();
}
}