@@ -25,13 +25,12 @@ public abstract class Tree<TNode, TData>: TreeBase<TNode, TData>
25
25
[ NonSerialized ] public GUIStyle FocusedTreeNodeStyle ;
26
26
[ NonSerialized ] public GUIStyle FocusedActiveTreeNodeStyle ;
27
27
28
-
29
28
[ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
30
29
[ NonSerialized ] private Action < TNode > rightClickNextRender ;
31
30
[ NonSerialized ] private TNode rightClickNextRenderNode ;
32
31
33
32
[ NonSerialized ] private int controlId ;
34
- [ NonSerialized ] private TreeSelection selectionObject ;
33
+ [ NonSerialized ] protected TreeSelection selectionObject ;
35
34
36
35
public bool IsInitialized { get { return Nodes != null && Nodes . Count > 0 && ! String . IsNullOrEmpty ( Nodes [ 0 ] . Path ) ; } }
37
36
public bool RequiresRepaint { get ; private set ; }
@@ -79,7 +78,8 @@ public Rect Render(Rect containingRect, Rect rect, Vector2 scroll, Action<TNode>
79
78
var titleDisplay = ! ( rect . y > endDisplay || rect . yMax < startDisplay ) ;
80
79
if ( titleDisplay )
81
80
{
82
- renderResult = titleNode . Render ( rect , Styles . TreeIndentation , SelectedNode == titleNode , FolderStyle , TreeNodeStyle , ActiveTreeNodeStyle ) ;
81
+ var isSelected = SelectedNode == titleNode && treeHasFocus ;
82
+ renderResult = titleNode . Render ( rect , Styles . TreeIndentation , isSelected , FolderStyle , treeNodeStyle , activeTreeNodeStyle ) ;
83
83
}
84
84
85
85
if ( renderResult == TreeNodeRenderResult . VisibilityChange )
@@ -112,7 +112,8 @@ public Rect Render(Rect containingRect, Rect rect, Vector2 scroll, Action<TNode>
112
112
var display = ! ( rect . y > endDisplay || rect . yMax < startDisplay ) ;
113
113
if ( display )
114
114
{
115
- renderResult = node . Render ( rect , Styles . TreeIndentation , SelectedNode == node , FolderStyle , TreeNodeStyle , ActiveTreeNodeStyle ) ;
115
+ var isSelected = SelectedNode == node && treeHasFocus ;
116
+ renderResult = node . Render ( rect , Styles . TreeIndentation , isSelected , FolderStyle , treeNodeStyle , activeTreeNodeStyle ) ;
116
117
}
117
118
118
119
if ( renderResult == TreeNodeRenderResult . VisibilityChange )
@@ -206,7 +207,7 @@ private bool HandleInput(Rect rect, TNode currentNode, int index, Action<TNode>
206
207
}
207
208
208
209
// Keyboard navigation if this child is the current selection
209
- if ( currentNode == SelectedNode && Event . current . type == EventType . KeyDown )
210
+ if ( GUIUtility . keyboardControl == controlId && currentNode == SelectedNode && Event . current . type == EventType . KeyDown )
210
211
{
211
212
int directionY = Event . current . keyCode == KeyCode . UpArrow ? - 1 : Event . current . keyCode == KeyCode . DownArrow ? 1 : 0 ;
212
213
int directionX = Event . current . keyCode == KeyCode . LeftArrow ? - 1 : Event . current . keyCode == KeyCode . RightArrow ? 1 : 0 ;
@@ -563,6 +564,10 @@ public override TreeNode SelectedNode
563
564
set
564
565
{
565
566
selectedNode = value ;
567
+ if ( value != null && selectionObject )
568
+ {
569
+ Selection . activeObject = selectionObject ;
570
+ }
566
571
}
567
572
}
568
573
0 commit comments