Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 664878f

Browse files
Using the selectionObject to clear focus
1 parent 41de08f commit 664878f

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesTreeControl.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ public override ChangesTreeNode SelectedNode
7878
set
7979
{
8080
selectedNode = value;
81+
if (value != null && selectionObject)
82+
{
83+
Selection.activeObject = selectionObject;
84+
}
8185
}
8286
}
8387

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)