@@ -54,7 +54,6 @@ private set
54
54
55
55
public TreeNode ActiveNode { get { return activeNode ; } }
56
56
57
-
58
57
public void Load ( IEnumerable < ITreeData > data , string title )
59
58
{
60
59
var collapsedFoldersEnumerable = folders . Where ( pair => pair . Value . IsCollapsed ) . Select ( pair => pair . Key ) ;
@@ -153,10 +152,6 @@ public void Load(IEnumerable<ITreeData> data, string title)
153
152
154
153
public Rect Render ( Rect rect , Vector2 scroll , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null , Action < TreeNode > rightClick = null )
155
154
{
156
- Profiler . BeginSample ( "TreeControl" ) ;
157
- var visible = true ;
158
- var availableHeight = rect . y + rect . height ;
159
-
160
155
RequiresRepaint = false ;
161
156
rect = new Rect ( 0f , rect . y , rect . width , ItemHeight ) ;
162
157
@@ -187,16 +182,12 @@ public Rect Render(Rect rect, Vector2 scroll, Action<TreeNode> singleClick = nul
187
182
{
188
183
Indent ( ) ;
189
184
}
185
+ var changed = node . Render ( rect , Styles . TreeIndentation , selectedNode == node , FolderStyle , TreeNodeStyle , ActiveTreeNodeStyle ) ;
190
186
191
- if ( visible )
187
+ if ( node . IsFolder && changed )
192
188
{
193
- var changed = node . Render ( rect , Styles . TreeIndentation , selectedNode == node , FolderStyle , TreeNodeStyle , ActiveTreeNodeStyle ) ;
194
-
195
- if ( node . IsFolder && changed )
196
- {
197
- // toggle visibility for all the nodes under this one
198
- ToggleNodeVisibility ( i , node ) ;
199
- }
189
+ // toggle visibility for all the nodes under this one
190
+ ToggleNodeVisibility ( i , node ) ;
200
191
}
201
192
202
193
if ( node . Level < level )
@@ -210,17 +201,13 @@ public Rect Render(Rect rect, Vector2 scroll, Action<TreeNode> singleClick = nul
210
201
211
202
if ( ! node . IsHidden )
212
203
{
213
- if ( visible )
214
- {
215
- RequiresRepaint = HandleInput ( rect , node , i , singleClick , doubleClick , rightClick ) ;
216
- }
204
+ RequiresRepaint = HandleInput ( rect , node , i , singleClick , doubleClick , rightClick ) ;
217
205
rect . y += ItemHeight + ItemSpacing ;
218
206
}
219
207
}
220
208
221
209
Unindent ( ) ;
222
210
223
- Profiler . EndSample ( ) ;
224
211
return rect ;
225
212
}
226
213
@@ -256,13 +243,13 @@ public void Blur()
256
243
257
244
private int ToggleNodeVisibility ( int idx , TreeNode rootNode )
258
245
{
259
- var rootNodeLevel = rootNode . Level ;
260
- rootNode . IsCollapsed = ! rootNode . IsCollapsed ;
246
+ var nodeLevel = node . Level ;
247
+ node . IsCollapsed = ! node . IsCollapsed ;
261
248
idx ++ ;
262
- for ( ; idx < nodes . Count && nodes [ idx ] . Level > rootNodeLevel ; idx ++ )
249
+ for ( ; idx < nodes . Count && nodes [ idx ] . Level > nodeLevel ; idx ++ )
263
250
{
264
- nodes [ idx ] . IsHidden = rootNode . IsCollapsed ;
265
- if ( nodes [ idx ] . IsFolder && ! rootNode . IsCollapsed && nodes [ idx ] . IsCollapsed )
251
+ nodes [ idx ] . IsHidden = node . IsCollapsed ;
252
+ if ( nodes [ idx ] . IsFolder && ! node . IsCollapsed && nodes [ idx ] . IsCollapsed )
266
253
{
267
254
var level = nodes [ idx ] . Level ;
268
255
for ( idx ++ ; idx < nodes . Count && nodes [ idx ] . Level > level ; idx ++ ) { }
@@ -271,7 +258,7 @@ private int ToggleNodeVisibility(int idx, TreeNode rootNode)
271
258
}
272
259
if ( SelectedNode != null && SelectedNode . IsHidden )
273
260
{
274
- SelectedNode = rootNode ;
261
+ SelectedNode = node ;
275
262
}
276
263
return idx ;
277
264
}
0 commit comments