Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 851ae97

Browse files
Adding functionality to control the display of the root node
1 parent b164664 commit 851ae97

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public abstract class Tree
2222

2323
[SerializeField] public string PathIgnoreRoot;
2424
[SerializeField] public string PathSeparator = "/";
25+
[SerializeField] public bool DisplayRootNode = true;
2526
[SerializeField] public GUIStyle FolderStyle;
2627
[SerializeField] public GUIStyle TreeNodeStyle;
2728
[SerializeField] public GUIStyle ActiveTreeNodeStyle;
@@ -61,11 +62,13 @@ public void Load(IEnumerable<ITreeData> data, string title)
6162
folders.Clear();
6263
nodes.Clear();
6364

65+
var displayRootLevel = DisplayRootNode ? 1 : 0;
66+
6467
var titleNode = new TreeNode()
6568
{
6669
Name = title,
6770
Label = title,
68-
Level = 0,
71+
Level = -1 + displayRootLevel,
6972
IsFolder = true
7073
};
7174
SetNodeIcon(titleNode);
@@ -101,7 +104,7 @@ public void Load(IEnumerable<ITreeData> data, string title)
101104
Name = name,
102105
IsActive = d.IsActive,
103106
Label = label,
104-
Level = level,
107+
Level = i + displayRootLevel,
105108
IsFolder = isFolder
106109
};
107110

@@ -148,26 +151,31 @@ public void Load(IEnumerable<ITreeData> data, string title)
148151
public Rect Render(Rect rect, Vector2 scroll, Action<TreeNode> singleClick = null, Action<TreeNode> doubleClick = null, Action<TreeNode> rightClick = null)
149152
{
150153
Profiler.BeginSample("TreeControl");
151-
bool visible = true;
154+
var visible = true;
152155
var availableHeight = rect.y + rect.height;
153156

154157
RequiresRepaint = false;
155158
rect = new Rect(0f, rect.y, rect.width, ItemHeight);
156159

157-
var titleNode = nodes[0];
158-
bool selectionChanged = titleNode.Render(rect, 0f, selectedNode == titleNode, FolderStyle, TreeNodeStyle, ActiveTreeNodeStyle);
160+
var level = 0;
159161

160-
if (selectionChanged)
162+
if (DisplayRootNode)
161163
{
162-
ToggleNodeVisibility(0, titleNode);
163-
}
164+
var titleNode = nodes[0];
165+
var selectionChanged = titleNode.Render(rect, 0f, selectedNode == titleNode, FolderStyle, TreeNodeStyle, ActiveTreeNodeStyle);
166+
167+
if (selectionChanged)
168+
{
169+
ToggleNodeVisibility(0, titleNode);
170+
}
164171

165-
RequiresRepaint = HandleInput(rect, titleNode, 0);
166-
rect.y += ItemHeight + ItemSpacing;
172+
RequiresRepaint = HandleInput(rect, titleNode, 0);
173+
rect.y += ItemHeight + ItemSpacing;
167174

168-
Indent();
175+
Indent();
176+
level = 1;
177+
}
169178

170-
int level = 1;
171179
int i = 1;
172180
for (; i < nodes.Count; i++)
173181
{

0 commit comments

Comments
 (0)