@@ -72,7 +72,7 @@ internal void RefreshFinder(IHostApplication host)
72
72
DeclarationFinder = new DeclarationFinder ( AllDeclarations , AllAnnotations , host ) ;
73
73
}
74
74
75
- private IVBE _vbe ;
75
+ private readonly IVBE _vbe ;
76
76
public RubberduckParserState ( IVBE vbe )
77
77
{
78
78
var values = Enum . GetValues ( typeof ( ParserState ) ) ;
@@ -82,32 +82,27 @@ public RubberduckParserState(IVBE vbe)
82
82
}
83
83
84
84
_vbe = vbe ;
85
-
86
- if ( _vbe != null && _vbe . VBProjects != null )
87
- {
88
- VBProjects . ProjectAdded += Sinks_ProjectAdded ;
89
- VBProjects . ProjectRemoved += Sinks_ProjectRemoved ;
90
- VBProjects . ProjectRenamed += Sinks_ProjectRenamed ;
91
- foreach ( var project in _vbe . VBProjects . Where ( proj => proj . VBComponents != null ) )
92
- {
93
- AddComponentEventHandlers ( project ) ;
94
- }
95
- }
96
-
85
+ AddEventHandlers ( ) ;
97
86
IsEnabled = true ;
98
87
}
99
88
100
89
#region Event Handling
101
90
102
- private void AddComponentEventHandlers ( IVBProject project )
91
+ private void AddEventHandlers ( )
103
92
{
93
+ VBProjects . ProjectAdded += Sinks_ProjectAdded ;
94
+ VBProjects . ProjectRemoved += Sinks_ProjectRemoved ;
95
+ VBProjects . ProjectRenamed += Sinks_ProjectRenamed ;
104
96
VBComponents . ComponentAdded += Sinks_ComponentAdded ;
105
97
VBComponents . ComponentRemoved += Sinks_ComponentRemoved ;
106
98
VBComponents . ComponentRenamed += Sinks_ComponentRenamed ;
107
99
}
108
100
109
- private void RemoveComponentEventHandlers ( IVBProject project )
101
+ private void RemoveEventHandlers ( )
110
102
{
103
+ VBProjects . ProjectAdded += Sinks_ProjectAdded ;
104
+ VBProjects . ProjectRemoved += Sinks_ProjectRemoved ;
105
+ VBProjects . ProjectRenamed += Sinks_ProjectRenamed ;
111
106
VBComponents . ComponentAdded -= Sinks_ComponentAdded ;
112
107
VBComponents . ComponentRemoved -= Sinks_ComponentRemoved ;
113
108
VBComponents . ComponentRenamed -= Sinks_ComponentRenamed ;
@@ -118,8 +113,6 @@ private void Sinks_ProjectAdded(object sender, ProjectEventArgs e)
118
113
if ( ! e . Project . VBE . IsInDesignMode ) { return ; }
119
114
120
115
Logger . Debug ( "Project '{0}' was added." , e . ProjectId ) ;
121
- AddComponentEventHandlers ( e . Project ) ;
122
-
123
116
RefreshProjects ( _vbe ) ; // note side-effect: assigns ProjectId/HelpFile
124
117
OnParseRequested ( sender ) ;
125
118
}
@@ -129,8 +122,6 @@ private void Sinks_ProjectRemoved(object sender, ProjectEventArgs e)
129
122
if ( ! e . Project . VBE . IsInDesignMode ) { return ; }
130
123
131
124
Debug . Assert ( e . ProjectId != null ) ;
132
- RemoveComponentEventHandlers ( e . Project ) ;
133
-
134
125
RemoveProject ( e . ProjectId , true ) ;
135
126
OnParseRequested ( sender ) ;
136
127
}
@@ -1110,16 +1101,7 @@ public void Dispose()
1110
1101
CoClasses . Clear ( ) ;
1111
1102
}
1112
1103
1113
- if ( _vbe != null && _vbe . VBProjects != null )
1114
- {
1115
- VBProjects . ProjectAdded -= Sinks_ProjectAdded ;
1116
- VBProjects . ProjectRemoved -= Sinks_ProjectRemoved ;
1117
- VBProjects . ProjectRenamed -= Sinks_ProjectRenamed ;
1118
- foreach ( var project in _vbe . VBProjects . Where ( proj => proj . VBComponents != null ) )
1119
- {
1120
- RemoveComponentEventHandlers ( project ) ;
1121
- }
1122
- }
1104
+ RemoveEventHandlers ( ) ;
1123
1105
1124
1106
_moduleStates . Clear ( ) ;
1125
1107
_declarationSelections . Clear ( ) ;
0 commit comments