Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 7 additions & 16 deletions RetailCoder.VBE/UI/SourceControl/SourceControlViewViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
using System.Linq;
using System.Windows.Forms;
using System.Windows.Media.Imaging;
using Microsoft.Vbe.Interop;
using NLog;
using Rubberduck.Parsing.VBA;
using Rubberduck.SettingsProvider;
Expand All @@ -17,7 +16,6 @@
using Rubberduck.UI.Command.MenuItems;
using Rubberduck.VBEditor.Events;
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
using Rubberduck.VBEditor.SafeComWrappers.VBA;
using resx = Rubberduck.UI.SourceControl.SourceControl;

namespace Rubberduck.UI.SourceControl
Expand Down Expand Up @@ -82,11 +80,8 @@ public SourceControlViewViewModel(

_openCommandPromptCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => OpenCommandPrompt());

Rubberduck.VBEditor.SafeComWrappers.VBA.VBProjects.ProjectRemoved += ProjectRemoved;
foreach (var project in _vbe.VBProjects.Where(proj => proj.VBComponents != null))
{
AddComponentEventHandlers(project);
}

AddComponentEventHandlers();

TabItems = new ObservableCollection<IControlView>(views);
SetTab(SourceControlTab.Changes);
Expand All @@ -108,15 +103,17 @@ public void SetTab(SourceControlTab tab)

private bool _listening = true;

private void AddComponentEventHandlers(IVBProject project)
private void AddComponentEventHandlers()
{
VBEditor.SafeComWrappers.VBA.VBProjects.ProjectRemoved += ProjectRemoved;
VBEditor.SafeComWrappers.VBA.VBComponents.ComponentAdded += ComponentAdded;
VBEditor.SafeComWrappers.VBA.VBComponents.ComponentRemoved += ComponentRemoved;
VBEditor.SafeComWrappers.VBA.VBComponents.ComponentRenamed += ComponentRenamed;
}

private void RemoveComponentEventHandlers(IVBProject project)
private void RemoveComponentEventHandlers()
{
VBEditor.SafeComWrappers.VBA.VBProjects.ProjectRemoved -= ProjectRemoved;
VBEditor.SafeComWrappers.VBA.VBComponents.ComponentAdded -= ComponentAdded;
VBEditor.SafeComWrappers.VBA.VBComponents.ComponentRemoved -= ComponentRemoved;
VBEditor.SafeComWrappers.VBA.VBComponents.ComponentRenamed -= ComponentRenamed;
Expand Down Expand Up @@ -185,8 +182,6 @@ private void ComponentRenamed(object sender, ComponentRenamedEventArgs e)

private void ProjectRemoved(object sender, ProjectEventArgs e)
{
RemoveComponentEventHandlers(e.Project);

if (Provider == null || !Provider.HandleVbeSinkEvents)
{
return;
Expand Down Expand Up @@ -1090,11 +1085,7 @@ public void Dispose()
_fileSystemWatcher.Dispose();
}

VBEditor.SafeComWrappers.VBA.VBProjects.ProjectRemoved -= ProjectRemoved;
foreach (var project in _vbe.VBProjects.Where(proj => proj.VBComponents != null))
{
RemoveComponentEventHandlers(project);
}
RemoveComponentEventHandlers();
}
}
}
2 changes: 1 addition & 1 deletion Rubberduck.VBEEditor/Events/VBEEvents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ private static void OnSelectionChanged(IntPtr hwnd)
if (SelectionChanged != null)
{
var pane = GetCodePaneFromHwnd(hwnd);
SelectionChanged.Invoke(_vbe, new SelectionChangedEventArgs(pane));
if (pane != null) SelectionChanged.Invoke(_vbe, new SelectionChangedEventArgs(pane));
}
}

Expand Down