@@ -257,9 +257,7 @@ private static void RegisterParseTreeInspections(IWindsorContainer container, As
257257        private  void  RegisterRubberduckMenu ( IWindsorContainer  container ) 
258258        { 
259259            const  int  windowMenuId  =  30009 ; 
260-             var  commandBars  =  _vbe . CommandBars ; 
261-             var  menuBar  =  commandBars [ MenuBar ] ; 
262-             var  controls  =  menuBar . Controls ; 
260+             var  controls  =  MainCommandBarControls ( MenuBar ) ; 
263261            var  beforeIndex  =  FindRubberduckMenuInsertionIndex ( controls ,  windowMenuId ) ; 
264262            var  menuItemTypes  =  RubberduckMenuItems ( ) ; 
265263            RegisterMenu < RubberduckParentMenu > ( container ,  controls ,  beforeIndex ,  menuItemTypes ) ; 
@@ -296,24 +294,36 @@ private static int FindRubberduckMenuInsertionIndex(ICommandBarControls controls
296294        { 
297295            for  ( var  i  =  1 ;  i  <=  controls . Count ;  i ++ ) 
298296            { 
299-                 var  item  =  controls [ i ] ; 
300-                 if  ( item . IsBuiltIn  &&  item . Id  ==  beforeId ) 
297+                 using  ( var  item  =  controls [ i ] ) 
301298                { 
302-                     return  i ; 
299+                     if  ( item . IsBuiltIn  &&  item . Id  ==  beforeId ) 
300+                     { 
301+                         return  i ; 
302+                     } 
303303                } 
304304            } 
305305
306306            return  controls . Count ; 
307307        } 
308308
309+         private  ICommandBarControls  MainCommandBarControls ( int  commandBarIndex ) 
310+         { 
311+             ICommandBarControls  controls ; 
312+             using  ( var  commandBars  =  _vbe . CommandBars ) 
313+             { 
314+                 using  ( var  menuBar  =  commandBars [ commandBarIndex ] ) 
315+                 { 
316+                     controls  =  menuBar . Controls ; 
317+                 } 
318+             } 
319+             return  controls ; 
320+         } 
321+ 
309322        private  void  RegisterCodePaneContextMenu ( IWindsorContainer  container ) 
310323        { 
311324            const  int  listMembersMenuId  =  2529 ; 
312-             var  commandBars  =  _vbe . CommandBars ; 
313-             var  menuBar  =  commandBars [ CodeWindow ] ; 
314-             var  controls  =  menuBar . Controls ; 
315-             var  beforeControl  =  controls . FirstOrDefault ( control =>  control . Id  ==  listMembersMenuId ) ; 
316-             var  beforeIndex  =  beforeControl  ==  null  ?  1  :  beforeControl . Index ; 
325+             var  controls  =  MainCommandBarControls ( CodeWindow ) ; 
326+             var  beforeIndex  =  FindRubberduckMenuInsertionIndex ( controls ,  listMembersMenuId ) ; 
317327            var  menuItemTypes  =  CodePaneContextMenuItems ( ) ; 
318328            RegisterMenu < CodePaneContextParentMenu > ( container ,  controls ,  beforeIndex ,  menuItemTypes ) ; 
319329        } 
@@ -333,11 +343,8 @@ private static Type[] CodePaneContextMenuItems()
333343        private  void  RegisterFormDesignerContextMenu ( IWindsorContainer  container ) 
334344        { 
335345            const  int  viewCodeMenuId  =  2558 ; 
336-             var  commandBars  =  _vbe . CommandBars ; 
337-             var  menuBar  =  commandBars [ MsForms ] ; 
338-             var  controls  =  menuBar . Controls ; 
339-             var  beforeControl  =  controls . FirstOrDefault ( control =>  control . Id  ==  viewCodeMenuId ) ; 
340-             var  beforeIndex  =  beforeControl ? . Index  ??  1 ; 
346+             var  controls  =  MainCommandBarControls ( MsForms ) ; 
347+             var  beforeIndex  =  FindRubberduckMenuInsertionIndex ( controls ,  viewCodeMenuId ) ; 
341348            var  menuItemTypes  =  FormDesignerContextMenuItems ( ) ; 
342349            RegisterMenu < FormDesignerContextParentMenu > ( container ,  controls ,  beforeIndex ,  menuItemTypes ) ; 
343350        } 
@@ -354,23 +361,17 @@ private static Type[] FormDesignerContextMenuItems()
354361        private  void  RegisterFormDesignerControlContextMenu ( IWindsorContainer  container ) 
355362        { 
356363            const  int  viewCodeMenuId  =  2558 ; 
357-             var  commandBars  =  _vbe . CommandBars ; 
358-             var  menuBar  =  commandBars [ MsFormsControl ] ; 
359-             var  controls  =  menuBar . Controls ; 
360-             var  beforeControl  =  controls . FirstOrDefault ( control =>  control . Id  ==  viewCodeMenuId ) ; 
361-             var  beforeIndex  =  beforeControl ? . Index  ??  1 ; 
364+             var  controls  =  MainCommandBarControls ( MsFormsControl ) ; 
365+             var  beforeIndex  =  FindRubberduckMenuInsertionIndex ( controls ,  viewCodeMenuId ) ; 
362366            var  menuItemTypes  =  FormDesignerContextMenuItems ( ) ; 
363367            RegisterMenu < FormDesignerControlContextParentMenu > ( container ,  controls ,  beforeIndex ,  menuItemTypes ) ; 
364368        } 
365369
366370        private  void  RegisterProjectExplorerContextMenu ( IWindsorContainer  container ) 
367371        { 
368372            const  int  projectPropertiesMenuId  =  2578 ; 
369-             var  commandBars  =  _vbe . CommandBars ; 
370-             var  menuBar  =  commandBars [ ProjectWindow ] ; 
371-             var  controls  =  menuBar . Controls ; 
372-             var  beforeControl  =  controls . FirstOrDefault ( control =>  control . Id  ==  projectPropertiesMenuId ) ; 
373-             var  beforeIndex  =  beforeControl ? . Index  ??  1 ; 
373+             var  controls  =  MainCommandBarControls ( ProjectWindow ) ; 
374+             var  beforeIndex  =  FindRubberduckMenuInsertionIndex ( controls ,  projectPropertiesMenuId ) ; 
374375            var  menuItemTypes  =  ProjectWindowContextMenuItems ( ) ; 
375376            RegisterMenu < ProjectWindowContextParentMenu > ( container ,  controls ,  beforeIndex ,  menuItemTypes ) ; 
376377        } 
0 commit comments