@@ -30,6 +30,7 @@ public abstract class Tree: ITree
30
30
[ SerializeField ] private List < TreeNode > nodes = new List < TreeNode > ( ) ;
31
31
[ SerializeField ] private TreeNode selectedNode = null ;
32
32
[ SerializeField ] private TreeNodeDictionary folders = new TreeNodeDictionary ( ) ;
33
+ [ SerializeField ] private TreeNodeDictionary checkedFileNodes = new TreeNodeDictionary ( ) ;
33
34
34
35
[ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
35
36
[ NonSerialized ] private Action < TreeNode > rightClickNextRender ;
@@ -112,14 +113,19 @@ public void AddNode(string path, string label, int level, bool isFolder, bool is
112
113
public void Clear ( )
113
114
{
114
115
folders . Clear ( ) ;
116
+ checkedFileNodes . Clear ( ) ;
115
117
nodes . Clear ( ) ;
116
118
SelectedNode = null ;
117
119
}
118
120
119
- public HashSet < string > GetCollapsedFolders ( )
121
+ public IEnumerable < string > GetCollapsedFolders ( )
120
122
{
121
- var collapsedFoldersEnumerable = folders . Where ( pair => pair . Value . IsCollapsed ) . Select ( pair => pair . Key ) ;
122
- return new HashSet < string > ( collapsedFoldersEnumerable ) ;
123
+ return folders . Where ( pair => pair . Value . IsCollapsed ) . Select ( pair => pair . Key ) ;
124
+ }
125
+
126
+ public IEnumerable < string > GetCheckedFiles ( )
127
+ {
128
+ return checkedFileNodes . Where ( pair => pair . Value . CheckState == CheckState . Checked ) . Select ( pair => pair . Key ) ;
123
129
}
124
130
125
131
public Rect Render ( Rect containingRect , Rect rect , Vector2 scroll , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null , Action < TreeNode > rightClick = null )
@@ -270,6 +276,13 @@ private void ToggleNodeChecked(int idx, TreeNode node)
270
276
{
271
277
ToggleChildrenChecked ( idx , node , isChecked ) ;
272
278
}
279
+ else
280
+ {
281
+ if ( isChecked )
282
+ {
283
+ checkedFileNodes . Add ( node . Path , node ) ;
284
+ }
285
+ }
273
286
274
287
ToggleParentFoldersChecked ( idx , node , isChecked ) ;
275
288
}
@@ -290,6 +303,13 @@ private void ToggleChildrenChecked(int idx, TreeNode node, bool isChecked)
290
303
{
291
304
ToggleChildrenChecked ( i , childNode , isChecked ) ;
292
305
}
306
+ else
307
+ {
308
+ if ( isChecked )
309
+ {
310
+ checkedFileNodes . Add ( node . Path , node ) ;
311
+ }
312
+ }
293
313
}
294
314
}
295
315
0 commit comments