From e9d487ed4e2e0ba75826439019e92939573c3bc7 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Mon, 4 Dec 2017 17:52:02 -0500 Subject: [PATCH 1/3] Adding functionality to update styles --- .../Editor/GitHub.Unity/UI/BranchesView.cs | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs index d6fb144e7..ab55bb713 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs @@ -63,7 +63,7 @@ public override void InitializeView(IView parent) public override void OnEnable() { base.OnEnable(); - UpdateTreeIcons(); + UpdateTreeIconAndStyles(); AttachHandlers(Repository); Repository.CheckLocalAndRemoteBranchListChangedEvent(lastLocalAndRemoteBranchListChangedEvent); } @@ -157,7 +157,7 @@ private void BuildTree() treeRemotes = new BranchesTree(); treeRemotes.IsRemote = true; - UpdateTreeIcons(); + UpdateTreeIconAndStyles(); } localBranches.Sort(CompareBranches); @@ -168,16 +168,22 @@ private void BuildTree() Redraw(); } - private void UpdateTreeIcons() + private void UpdateTreeIconAndStyles() { if (treeLocals != null) { treeLocals.UpdateIcons(Styles.ActiveBranchIcon, Styles.BranchIcon, Styles.FolderIcon, Styles.GlobeIcon); + treeLocals.FolderStyle = Styles.Foldout; + treeLocals.TreeNodeStyle = Styles.TreeNode; + treeLocals.ActiveTreeNodeStyle = Styles.TreeNodeActive; } if (treeRemotes != null) { treeRemotes.UpdateIcons(Styles.ActiveBranchIcon, Styles.BranchIcon, Styles.FolderIcon, Styles.GlobeIcon); + treeRemotes.FolderStyle = Styles.Foldout; + treeRemotes.TreeNodeStyle = Styles.TreeNode; + treeRemotes.ActiveTreeNodeStyle = Styles.TreeNodeActive; } } @@ -295,18 +301,7 @@ private void OnButtonBarGUI() private void OnTreeGUI(Rect rect) { - var initialRect = rect; - - if (treeLocals.FolderStyle == null) - { - treeLocals.FolderStyle = Styles.Foldout; - treeLocals.TreeNodeStyle = Styles.TreeNode; - treeLocals.ActiveTreeNodeStyle = Styles.TreeNodeActive; - treeRemotes.FolderStyle = Styles.Foldout; - treeRemotes.TreeNodeStyle = Styles.TreeNode; - treeRemotes.ActiveTreeNodeStyle = Styles.TreeNodeActive; - } - + var initialRect = rect; var treeHadFocus = treeLocals.SelectedNode != null; rect = treeLocals.Render(rect, scroll, From 14d16fe38665440deedd953284326bb46f5eea31 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 5 Dec 2017 10:09:10 -0500 Subject: [PATCH 2/3] Fixing styles that get used in the Tree Learned a few lessons here... Style objects should only be created OnGui Textures loaded from colors have a hideflag property too --- .../Editor/GitHub.Unity/Misc/Utility.cs | 1 + .../Editor/GitHub.Unity/UI/BranchesView.cs | 23 +++++++++++++++---- .../Editor/GitHub.Unity/UI/TreeControl.cs | 6 ++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Utility.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Utility.cs index eb8d59874..8b0e86bc2 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Utility.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Utility.cs @@ -43,6 +43,7 @@ public static Texture2D GetTextureFromColor(Color color) pix[0] = color; Texture2D result = new Texture2D(1, 1); + result.hideFlags = HideFlags.HideAndDontSave; result.SetPixels(pix); result.Apply(); diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs index ab55bb713..44c3fb075 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs @@ -63,7 +63,7 @@ public override void InitializeView(IView parent) public override void OnEnable() { base.OnEnable(); - UpdateTreeIconAndStyles(); + UpdateTreeIcons(); AttachHandlers(Repository); Repository.CheckLocalAndRemoteBranchListChangedEvent(lastLocalAndRemoteBranchListChangedEvent); } @@ -157,7 +157,7 @@ private void BuildTree() treeRemotes = new BranchesTree(); treeRemotes.IsRemote = true; - UpdateTreeIconAndStyles(); + UpdateTreeIcons(); } localBranches.Sort(CompareBranches); @@ -168,19 +168,30 @@ private void BuildTree() Redraw(); } - private void UpdateTreeIconAndStyles() + private void UpdateTreeIcons() { if (treeLocals != null) { treeLocals.UpdateIcons(Styles.ActiveBranchIcon, Styles.BranchIcon, Styles.FolderIcon, Styles.GlobeIcon); + } + + if (treeRemotes != null) + { + treeRemotes.UpdateIcons(Styles.ActiveBranchIcon, Styles.BranchIcon, Styles.FolderIcon, Styles.GlobeIcon); + } + } + + private void UpdateTreeStyles() + { + if (treeLocals != null && treeLocals.FolderStyle == null) + { treeLocals.FolderStyle = Styles.Foldout; treeLocals.TreeNodeStyle = Styles.TreeNode; treeLocals.ActiveTreeNodeStyle = Styles.TreeNodeActive; } - if (treeRemotes != null) + if (treeRemotes != null && treeRemotes.FolderStyle == null) { - treeRemotes.UpdateIcons(Styles.ActiveBranchIcon, Styles.BranchIcon, Styles.FolderIcon, Styles.GlobeIcon); treeRemotes.FolderStyle = Styles.Foldout; treeRemotes.TreeNodeStyle = Styles.TreeNode; treeRemotes.ActiveTreeNodeStyle = Styles.TreeNodeActive; @@ -304,6 +315,8 @@ private void OnTreeGUI(Rect rect) var initialRect = rect; var treeHadFocus = treeLocals.SelectedNode != null; + UpdateTreeStyles(); + rect = treeLocals.Render(rect, scroll, node =>{ }, node => { diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs index 092f41f2c..886b05023 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs @@ -20,9 +20,9 @@ public abstract class Tree [SerializeField] public Rect Margin = new Rect(); [SerializeField] public Rect Padding = new Rect(); - [SerializeField] public GUIStyle FolderStyle; - [SerializeField] public GUIStyle TreeNodeStyle; - [SerializeField] public GUIStyle ActiveTreeNodeStyle; + [NonSerialized] public GUIStyle FolderStyle; + [NonSerialized] public GUIStyle TreeNodeStyle; + [NonSerialized] public GUIStyle ActiveTreeNodeStyle; [SerializeField] private List nodes = new List(); [SerializeField] private TreeNode selectedNode = null; From 4d5387f8d8a8dd0df673d93ac83e136c4ca88806 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 5 Dec 2017 13:11:28 -0500 Subject: [PATCH 3/3] Nit picking code --- .../Assets/Editor/GitHub.Unity/UI/BranchesView.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs index 44c3fb075..3ea3f5dcc 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs @@ -312,11 +312,11 @@ private void OnButtonBarGUI() private void OnTreeGUI(Rect rect) { + UpdateTreeStyles(); + var initialRect = rect; var treeHadFocus = treeLocals.SelectedNode != null; - UpdateTreeStyles(); - rect = treeLocals.Render(rect, scroll, node =>{ }, node => {