@@ -9,6 +9,8 @@ namespace GitHub.Unity
9
9
[ Serializable ]
10
10
public class TreeNodeDictionary : SerializableDictionary < string , TreeNode > { }
11
11
12
+ public class TreeSelection : ScriptableObject { }
13
+
12
14
[ Serializable ]
13
15
public abstract class Tree < TNode , TData > : TreeBase < TNode , TData >
14
16
where TNode : TreeNode
@@ -39,6 +41,8 @@ public abstract class Tree<TNode, TData>: TreeBase<TNode, TData>
39
41
[ NonSerialized ] private TNode rightClickNextRenderNode ;
40
42
[ NonSerialized ] private int controlId ;
41
43
44
+ [ SerializeField ] private TreeSelection selectionObject = ScriptableObject . CreateInstance < TreeSelection > ( ) ;
45
+
42
46
public bool IsInitialized { get { return Nodes != null && Nodes . Count > 0 && ! String . IsNullOrEmpty ( Nodes [ 0 ] . Path ) ; } }
43
47
public bool RequiresRepaint { get ; private set ; }
44
48
@@ -53,7 +57,7 @@ public override TNode SelectedNode
53
57
set
54
58
{
55
59
selectedNode = value ;
56
- Selection . activeObject = value ;
60
+ Selection . activeObject = selectionObject ;
57
61
}
58
62
}
59
63
@@ -89,7 +93,7 @@ protected override List<TNode> Nodes
89
93
public Rect Render ( Rect containingRect , Rect rect , Vector2 scroll , Action < TNode > singleClick = null , Action < TNode > doubleClick = null , Action < TNode > rightClick = null )
90
94
{
91
95
controlId = GUIUtility . GetControlID ( FocusType . Keyboard ) ;
92
- var treeHasFocus = GUIUtility . keyboardControl == controlId && Selection . activeObject == selectedNode ;
96
+ var treeHasFocus = GUIUtility . keyboardControl == controlId && Selection . activeObject == selectionObject ;
93
97
94
98
if ( ! Nodes . Any ( ) )
95
99
return new Rect ( 0f , rect . y , 0f , 0f ) ;
@@ -373,7 +377,7 @@ protected void LoadNodeIcons()
373
377
}
374
378
375
379
[ Serializable ]
376
- public class TreeNode : ScriptableObject , ITreeNode
380
+ public class TreeNode : ITreeNode
377
381
{
378
382
public string path ;
379
383
public string label ;
@@ -606,15 +610,16 @@ protected Texture GetNodeIcon(TreeNode node)
606
610
607
611
protected override TreeNode CreateTreeNode ( string path , string label , int level , bool isFolder , bool isActive , bool isHidden , bool isCollapsed , GitBranchTreeData ? treeData )
608
612
{
609
- var node = ScriptableObject . CreateInstance < TreeNode > ( ) ;
610
- node . Path = path ;
611
- node . Label = label ;
612
- node . Level = level ;
613
- node . IsFolder = isFolder ;
614
- node . IsActive = isActive ;
615
- node . IsHidden = isHidden ;
616
- node . IsCollapsed = isCollapsed ;
617
- node . TreeIsCheckable = IsCheckable ;
613
+ var node = new TreeNode {
614
+ Path = path ,
615
+ Label = label ,
616
+ Level = level ,
617
+ IsFolder = isFolder ,
618
+ IsActive = isActive ,
619
+ IsHidden = isHidden ,
620
+ IsCollapsed = isCollapsed ,
621
+ TreeIsCheckable = IsCheckable
622
+ } ;
618
623
619
624
if ( isFolder )
620
625
{
0 commit comments