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

Commit 8ffecb0

Browse files
Attempting to change focus on the change of focus to another control
1 parent d954351 commit 8ffecb0

File tree

4 files changed

+38
-26
lines changed

4 files changed

+38
-26
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ public override void OnDataUpdate()
7979
MaybeUpdateData();
8080
}
8181

82+
public override void OnSelectionChange()
83+
{
84+
base.OnSelectionChange();
85+
Redraw();
86+
}
87+
8288
private void RepositoryOnLocalAndRemoteBranchListChanged(CacheUpdateEvent cacheUpdateEvent)
8389
{
8490
if (!lastLocalAndRemoteBranchListChangedEvent.Equals(cacheUpdateEvent))

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

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,17 @@ protected Texture GetNodeIconBadge(ChangesTreeNode node)
9494

9595
protected override ChangesTreeNode CreateTreeNode(string path, string label, int level, bool isFolder, bool isActive, bool isHidden, bool isCollapsed, GitStatusEntryTreeData? treeData)
9696
{
97-
var node = new ChangesTreeNode
98-
{
99-
Path = path,
100-
Label = label,
101-
Level = level,
102-
IsFolder = isFolder,
103-
IsActive = isActive,
104-
IsHidden = isHidden,
105-
IsCollapsed = isCollapsed,
106-
TreeIsCheckable = IsCheckable,
107-
GitFileStatus = treeData.HasValue ? treeData.Value.FileStatus : GitFileStatus.None,
108-
ProjectPath = treeData.HasValue ? treeData.Value.ProjectPath : null
109-
};
97+
var node = ScriptableObject.CreateInstance<ChangesTreeNode>();
98+
node.Path = path;
99+
node.Label = label;
100+
node.Level = level;
101+
node.IsFolder = isFolder;
102+
node.IsActive = isActive;
103+
node.IsHidden = isHidden;
104+
node.IsCollapsed = isCollapsed;
105+
node.TreeIsCheckable = IsCheckable;
106+
node.GitFileStatus = treeData.HasValue ? treeData.Value.FileStatus : GitFileStatus.None;
107+
node.ProjectPath = treeData.HasValue ? treeData.Value.ProjectPath : null;
110108

111109
if (isFolder)
112110
{

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ public override void OnGUI()
9494
OnCommitDetailsAreaGUI();
9595
}
9696

97+
public override void OnSelectionChange()
98+
{
99+
base.OnSelectionChange();
100+
Redraw();
101+
}
102+
97103
private void OnTreeGUI(Rect rect)
98104
{
99105
var initialRect = rect;

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

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public override TNode SelectedNode
5353
set
5454
{
5555
selectedNode = value;
56+
Selection.activeObject = value;
5657
}
5758
}
5859

@@ -88,11 +89,14 @@ protected override List<TNode> Nodes
8889
public Rect Render(Rect containingRect, Rect rect, Vector2 scroll, Action<TNode> singleClick = null, Action<TNode> doubleClick = null, Action<TNode> rightClick = null)
8990
{
9091
controlId = GUIUtility.GetControlID(FocusType.Keyboard);
92+
var treeHasFocus = GUIUtility.keyboardControl == controlId && Selection.activeObject == selectedNode;
93+
94+
if (!Nodes.Any())
95+
return new Rect(0f, rect.y, 0f, 0f);
9196

9297
var treeNodeStyle = TreeNodeStyle;
9398
var activeTreeNodeStyle = ActiveTreeNodeStyle;
9499

95-
var treeHasFocus = GUIUtility.keyboardControl == controlId;
96100
if (treeHasFocus)
97101
{
98102
treeNodeStyle = FocusedTreeNodeStyle;
@@ -359,7 +363,6 @@ private void Unindent()
359363
indents.Pop();
360364
}
361365

362-
363366
protected void LoadNodeIcons()
364367
{
365368
foreach (var treeNode in Nodes)
@@ -370,7 +373,7 @@ protected void LoadNodeIcons()
370373
}
371374

372375
[Serializable]
373-
public class TreeNode : ITreeNode
376+
public class TreeNode : ScriptableObject, ITreeNode
374377
{
375378
public string path;
376379
public string label;
@@ -603,16 +606,15 @@ protected Texture GetNodeIcon(TreeNode node)
603606

604607
protected override TreeNode CreateTreeNode(string path, string label, int level, bool isFolder, bool isActive, bool isHidden, bool isCollapsed, GitBranchTreeData? treeData)
605608
{
606-
var node = new TreeNode {
607-
Path = path,
608-
Label = label,
609-
Level = level,
610-
IsFolder = isFolder,
611-
IsActive = isActive,
612-
IsHidden = isHidden,
613-
IsCollapsed = isCollapsed,
614-
TreeIsCheckable = IsCheckable
615-
};
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;
616618

617619
if (isFolder)
618620
{

0 commit comments

Comments
 (0)