@@ -34,6 +34,7 @@ public sealed class App : IDisposable
34
34
private IRubberduckHooks _hooks ;
35
35
private bool _handleSinkEvents = true ;
36
36
private readonly BranchesViewViewModel _branchesVM ;
37
+ private readonly SourceControlViewViewModel _panelVM ;
37
38
38
39
private readonly Logger _logger ;
39
40
@@ -67,11 +68,14 @@ public App(VBE vbe, IMessageBox messageBox,
67
68
_logger = LogManager . GetCurrentClassLogger ( ) ;
68
69
69
70
var sourceControlPanel = ( SourceControlPanel ) sourceControlPresenter . Window ( ) ;
70
- var panelVM = ( SourceControlViewViewModel ) sourceControlPanel . ViewModel ;
71
- _branchesVM = ( BranchesViewViewModel ) panelVM . TabItems . Single ( t => t . ViewModel . Tab == SourceControlTab . Branches ) . ViewModel ;
71
+ _panelVM = ( SourceControlViewViewModel ) sourceControlPanel . ViewModel ;
72
+ _branchesVM = ( BranchesViewViewModel ) _panelVM . TabItems . Single ( t => t . ViewModel . Tab == SourceControlTab . Branches ) . ViewModel ;
72
73
73
- _branchesVM . MergeStarted += _branchesVM_MergeStarted ;
74
- _branchesVM . MergeCompleted += _branchesVM_MergeCompleted ;
74
+ _panelVM . OpenRepoStarted += DisableSinkEventHandlers ;
75
+ _panelVM . OpenRepoCompleted += EnableSinkEventHandlersAndUpdateCache ;
76
+
77
+ _branchesVM . MergeStarted += DisableSinkEventHandlers ;
78
+ _branchesVM . MergeCompleted += EnableSinkEventHandlersAndUpdateCache ;
75
79
76
80
_hooks . MessageReceived += _hooks_MessageReceived ;
77
81
_configService . SettingsChanged += _configService_SettingsChanged ;
@@ -94,7 +98,7 @@ public App(VBE vbe, IMessageBox messageBox,
94
98
UiDispatcher . Initialize ( ) ;
95
99
}
96
100
97
- private void _branchesVM_MergeCompleted ( object sender , EventArgs e )
101
+ private void EnableSinkEventHandlersAndUpdateCache ( object sender , EventArgs e )
98
102
{
99
103
_handleSinkEvents = true ;
100
104
@@ -105,7 +109,7 @@ private void _branchesVM_MergeCompleted(object sender, EventArgs e)
105
109
_parser . State . OnParseRequested ( this ) ;
106
110
}
107
111
108
- private void _branchesVM_MergeStarted ( object sender , EventArgs e )
112
+ private void DisableSinkEventHandlers ( object sender , EventArgs e )
109
113
{
110
114
_handleSinkEvents = false ;
111
115
}
@@ -446,10 +450,16 @@ public void Dispose()
446
450
return ;
447
451
}
448
452
453
+ if ( _panelVM != null )
454
+ {
455
+ _panelVM . OpenRepoStarted -= DisableSinkEventHandlers ;
456
+ _panelVM . OpenRepoCompleted -= EnableSinkEventHandlersAndUpdateCache ;
457
+ }
458
+
449
459
if ( _branchesVM != null )
450
460
{
451
- _branchesVM . MergeStarted -= _branchesVM_MergeStarted ;
452
- _branchesVM . MergeCompleted -= _branchesVM_MergeCompleted ;
461
+ _branchesVM . MergeStarted -= DisableSinkEventHandlers ;
462
+ _branchesVM . MergeCompleted -= EnableSinkEventHandlersAndUpdateCache ;
453
463
}
454
464
455
465
if ( _hooks != null )
0 commit comments