@@ -25,13 +25,12 @@ public abstract class Tree<TNode, TData>: TreeBase<TNode, TData>
2525 [ NonSerialized ] public GUIStyle FocusedTreeNodeStyle ;
2626 [ NonSerialized ] public GUIStyle FocusedActiveTreeNodeStyle ;
2727
28-
2928 [ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
3029 [ NonSerialized ] private Action < TNode > rightClickNextRender ;
3130 [ NonSerialized ] private TNode rightClickNextRenderNode ;
3231
3332 [ NonSerialized ] private int controlId ;
34- [ NonSerialized ] private TreeSelection selectionObject ;
33+ [ NonSerialized ] protected TreeSelection selectionObject ;
3534
3635 public bool IsInitialized { get { return Nodes != null && Nodes . Count > 0 && ! String . IsNullOrEmpty ( Nodes [ 0 ] . Path ) ; } }
3736 public bool RequiresRepaint { get ; private set ; }
@@ -79,7 +78,8 @@ public Rect Render(Rect containingRect, Rect rect, Vector2 scroll, Action<TNode>
7978 var titleDisplay = ! ( rect . y > endDisplay || rect . yMax < startDisplay ) ;
8079 if ( titleDisplay )
8180 {
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 ) ;
8383 }
8484
8585 if ( renderResult == TreeNodeRenderResult . VisibilityChange )
@@ -112,7 +112,8 @@ public Rect Render(Rect containingRect, Rect rect, Vector2 scroll, Action<TNode>
112112 var display = ! ( rect . y > endDisplay || rect . yMax < startDisplay ) ;
113113 if ( display )
114114 {
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 ) ;
116117 }
117118
118119 if ( renderResult == TreeNodeRenderResult . VisibilityChange )
@@ -206,7 +207,7 @@ private bool HandleInput(Rect rect, TNode currentNode, int index, Action<TNode>
206207 }
207208
208209 // 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 )
210211 {
211212 int directionY = Event . current . keyCode == KeyCode . UpArrow ? - 1 : Event . current . keyCode == KeyCode . DownArrow ? 1 : 0 ;
212213 int directionX = Event . current . keyCode == KeyCode . LeftArrow ? - 1 : Event . current . keyCode == KeyCode . RightArrow ? 1 : 0 ;
@@ -563,6 +564,10 @@ public override TreeNode SelectedNode
563564 set
564565 {
565566 selectedNode = value ;
567+ if ( value != null && selectionObject )
568+ {
569+ Selection . activeObject = selectionObject ;
570+ }
566571 }
567572 }
568573
0 commit comments