From aca36638c9775875d3f1f23180e737383bb771ee Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Fri, 27 Oct 2017 18:04:52 -0400 Subject: [PATCH 1/3] Attaching and detaching handlers at the right time --- .../Assets/Editor/GitHub.Unity/UI/BranchesView.cs | 8 -------- .../Assets/Editor/GitHub.Unity/UI/ChangesView.cs | 14 +++++++++++++- .../Assets/Editor/GitHub.Unity/UI/HistoryView.cs | 3 --- .../Assets/Editor/GitHub.Unity/UI/SettingsView.cs | 9 --------- 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs index 8c00a6f63..10f40ada1 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/BranchesView.cs @@ -88,18 +88,10 @@ private void MaybeUpdateData() } } - public override void OnRepositoryChanged(IRepository oldRepository) - { - base.OnRepositoryChanged(oldRepository); - DetachHandlers(oldRepository); - AttachHandlers(Repository); - } - private void AttachHandlers(IRepository repository) { if (repository == null) return; - repository.OnLocalBranchListChanged += RunUpdateBranchesOnMainThread; repository.OnCurrentBranchChanged += HandleRepositoryBranchChangeEvent; repository.OnCurrentRemoteChanged += HandleRepositoryBranchChangeEvent; diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs index 2c560ef44..d2722d168 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs @@ -40,13 +40,25 @@ public override void OnEnable() return; OnStatusUpdate(Repository.CurrentStatus); - Repository.OnStatusChanged += RunStatusUpdateOnMainThread; + AttachHandlers(Repository); Repository.Refresh(); } public override void OnDisable() { base.OnDisable(); + DetachHandlers(); + } + + private void AttachHandlers(IRepository repository) + { + if (repository == null) + return; + repository.OnStatusChanged += RunStatusUpdateOnMainThread; + } + + private void DetachHandlers() + { if (Repository == null) return; Repository.OnStatusChanged -= RunStatusUpdateOnMainThread; diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs index 14e803c78..b5760279e 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs @@ -87,9 +87,6 @@ public override void OnDataUpdate() public override void OnRepositoryChanged(IRepository oldRepository) { base.OnRepositoryChanged(oldRepository); - - DetachHandlers(oldRepository); - AttachHandlers(Repository); } public override void OnSelectionChange() diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs index 731fe401b..0446adc08 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs @@ -82,13 +82,6 @@ public override void OnRepositoryChanged(IRepository oldRepository) base.OnRepositoryChanged(oldRepository); gitPathView.OnRepositoryChanged(oldRepository); userSettingsView.OnRepositoryChanged(oldRepository); - - DetachHandlers(oldRepository); - AttachHandlers(Repository); - - remoteHasChanged = true; - - Refresh(); } public override void Refresh() @@ -106,7 +99,6 @@ private void AttachHandlers(IRepository repository) { if (repository == null) return; - repository.OnCurrentRemoteChanged += Repository_OnActiveRemoteChanged; repository.OnLocksChanged += RunLocksUpdateOnMainThread; } @@ -115,7 +107,6 @@ private void DetachHandlers(IRepository repository) { if (repository == null) return; - repository.OnCurrentRemoteChanged -= Repository_OnActiveRemoteChanged; repository.OnLocksChanged -= RunLocksUpdateOnMainThread; } From f99cf4634af69fe73404c88658db793f5cf54fff Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Fri, 27 Oct 2017 18:11:15 -0400 Subject: [PATCH 2/3] Making Repository a parameter for DetachHandlers --- .../Assets/Editor/GitHub.Unity/UI/ChangesView.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs index d2722d168..082312a4c 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs @@ -47,7 +47,7 @@ public override void OnEnable() public override void OnDisable() { base.OnDisable(); - DetachHandlers(); + DetachHandlers(Repository); } private void AttachHandlers(IRepository repository) @@ -57,11 +57,11 @@ private void AttachHandlers(IRepository repository) repository.OnStatusChanged += RunStatusUpdateOnMainThread; } - private void DetachHandlers() + private void DetachHandlers(IRepository oldRepository) { - if (Repository == null) + if (oldRepository == null) return; - Repository.OnStatusChanged -= RunStatusUpdateOnMainThread; + oldRepository.OnStatusChanged -= RunStatusUpdateOnMainThread; } private void RunStatusUpdateOnMainThread(GitStatus status) From f0f57cb004cd4a96f909c408903a7d562efa52fb Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 2 Nov 2017 13:46:13 -0400 Subject: [PATCH 3/3] Removing OnRepositoryChanged --- .../Assets/Editor/GitHub.Unity/UI/HistoryView.cs | 5 ----- .../Assets/Editor/GitHub.Unity/UI/SettingsView.cs | 7 ------- .../Assets/Editor/GitHub.Unity/UI/Subview.cs | 3 --- src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs | 4 ---- 4 files changed, 19 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs index b5760279e..dfdfef89e 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs @@ -84,11 +84,6 @@ public override void OnDataUpdate() MaybeUpdateData(); } - public override void OnRepositoryChanged(IRepository oldRepository) - { - base.OnRepositoryChanged(oldRepository); - } - public override void OnSelectionChange() { diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs index 0446adc08..0ea2240df 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/SettingsView.cs @@ -77,13 +77,6 @@ public override void OnDataUpdate() MaybeUpdateData(); } - public override void OnRepositoryChanged(IRepository oldRepository) - { - base.OnRepositoryChanged(oldRepository); - gitPathView.OnRepositoryChanged(oldRepository); - userSettingsView.OnRepositoryChanged(oldRepository); - } - public override void Refresh() { base.Refresh(); diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Subview.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Subview.cs index 186a879a7..b6a4d84f7 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Subview.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Subview.cs @@ -48,9 +48,6 @@ public virtual void Finish(bool result) Parent.Finish(result); } - public virtual void OnRepositoryChanged(IRepository oldRepository) - {} - protected IView Parent { get; private set; } public IApplicationManager Manager { get { return Parent.Manager; } } public IRepository Repository { get { return Parent.Repository; } } diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs index f9a32fa25..c7e799cea 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs @@ -140,10 +140,6 @@ public override void OnRepositoryChanged(IRepository oldRepository) } UpdateActiveTab(); - - if (ActiveView != null) - ActiveView.OnRepositoryChanged(oldRepository); - UpdateLog(); }