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(); } }