Skip to content

Commit eaa57ef

Browse files
committed
Clean up ProjectEventArgs
1 parent 5213d7c commit eaa57ef

File tree

5 files changed

+68
-41
lines changed

5 files changed

+68
-41
lines changed
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
using System;
2-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
32

43
namespace Rubberduck.VBEditor.Events
54
{
65
public class ProjectEventArgs : EventArgs
76
{
8-
public ProjectEventArgs(string projectId, IVBProject project)
7+
public ProjectEventArgs(string projectId, string projectName)
98
{
109
ProjectId = projectId;
11-
Project = project;
10+
ProjectName = projectName;
1211
}
1312

1413
public string ProjectId { get; }
1514

16-
public IVBProject Project { get; }
15+
public string ProjectName { get; }
1716
}
1817
}

Rubberduck.VBEEditor/Events/ProjectRenamedEventArgs.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace Rubberduck.VBEditor.Events
44
{
55
public class ProjectRenamedEventArgs : ProjectEventArgs
66
{
7-
public ProjectRenamedEventArgs(string projectId, IVBProject project, string oldName) : base(projectId, project)
7+
public ProjectRenamedEventArgs(string projectId, string projectName, string oldName) : base(projectId, projectName)
88
{
99
OldName = oldName;
1010
}

Rubberduck.VBEEditor/Events/VbeEvents.cs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,33 @@ private VBEEvents(IVBE vbe)
6565
}
6666
}
6767

68+
private void RegisterComponents(string projectId, string projectName)
69+
{
70+
IVBProject project = null;
71+
foreach (var item in _projects)
72+
{
73+
if (item.ProjectId == projectId && item.Name == projectName)
74+
{
75+
project = item;
76+
break;
77+
}
78+
79+
item.Dispose();
80+
}
81+
82+
if (project == null)
83+
{
84+
return;
85+
}
86+
87+
RegisterComponents(project);
88+
}
89+
6890
private void RegisterComponents(IVBProject project)
6991
{
7092
if (project.IsWrappingNullReference || project.Protection != ProjectProtection.Unprotected)
7193
{
72-
return;
94+
return;
7395
}
7496

7597
project.AssignProjectId();
@@ -112,7 +134,7 @@ private void ProjectAddedHandler(object sender, ProjectEventArgs e)
112134
{
113135
if (!_components.ContainsKey(e.ProjectId))
114136
{
115-
RegisterComponents(e.Project);
137+
RegisterComponents(e.ProjectId, e.ProjectName);
116138
}
117139
ProjectAdded?.Invoke(sender, e);
118140
}

Rubberduck.VBEditor.VB6/SafeComWrappers/VB/VBProjects.cs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ void VB._dispVBProjectsEvents.ItemRenamed([MarshalAs(UnmanagedType.Interface), I
108108
project.Dispose();
109109
return;
110110
}
111-
handler.Invoke(project, new ProjectRenamedEventArgs(projectId, project, OldName));
111+
handler.Invoke(project, new ProjectRenamedEventArgs(projectId, project.Name, OldName));
112112
}
113113

114114
public event EventHandler<ProjectEventArgs> ProjectActivated;
@@ -119,26 +119,29 @@ void VB._dispVBProjectsEvents.ItemActivated([MarshalAs(UnmanagedType.Interface),
119119

120120
private void OnDispatch(EventHandler<ProjectEventArgs> dispatched, VB.VBProject vbProject, bool assignId = false)
121121
{
122-
var project = new VBProject(vbProject);
123-
var handler = dispatched;
124-
if (handler == null || !IsInDesignMode())
122+
using (var project = new VBProject(vbProject))
125123
{
126-
project.Dispose();
127-
return;
128-
}
124+
var handler = dispatched;
125+
if (handler == null || !IsInDesignMode())
126+
{
127+
project.Dispose();
128+
return;
129+
}
129130

130-
if (assignId)
131-
{
132-
project.AssignProjectId();
133-
}
134-
var projectId = project.ProjectId;
131+
if (assignId)
132+
{
133+
project.AssignProjectId();
134+
}
135135

136-
if (projectId == null)
137-
{
138-
project.Dispose();
139-
return;
136+
var projectId = project.ProjectId;
137+
138+
if (projectId == null)
139+
{
140+
return;
141+
}
142+
143+
handler.Invoke(project, new ProjectEventArgs(projectId, project.Name));
140144
}
141-
handler.Invoke(project, new ProjectEventArgs(projectId, project));
142145
}
143146

144147
private bool IsInDesignMode()

Rubberduck.VBEditor.VBA/SafeComWrappers/VB/VBProjects.cs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ void VB._dispVBProjectsEvents.ItemRenamed([MarshalAs(UnmanagedType.Interface), I
112112
project.Dispose();
113113
return;
114114
}
115-
handler.Invoke(project, new ProjectRenamedEventArgs(projectId, project, OldName));
115+
handler.Invoke(project, new ProjectRenamedEventArgs(projectId, project.Name, OldName));
116116
}
117117

118118
public event EventHandler<ProjectEventArgs> ProjectActivated;
@@ -123,26 +123,29 @@ void VB._dispVBProjectsEvents.ItemActivated([MarshalAs(UnmanagedType.Interface),
123123

124124
private void OnDispatch(EventHandler<ProjectEventArgs> dispatched, VB.VBProject vbProject, bool assignId = false)
125125
{
126-
var project = new VBProject(vbProject);
127-
var handler = dispatched;
128-
if (handler == null || !IsInDesignMode() || vbProject.Protection == VB.vbext_ProjectProtection.vbext_pp_locked)
126+
using (var project = new VBProject(vbProject))
129127
{
130-
project.Dispose();
131-
return;
132-
}
128+
var handler = dispatched;
129+
if (handler == null || !IsInDesignMode() ||
130+
vbProject.Protection == VB.vbext_ProjectProtection.vbext_pp_locked)
131+
{
132+
return;
133+
}
133134

134-
if (assignId)
135-
{
136-
project.AssignProjectId();
137-
}
138-
var projectId = project.ProjectId;
135+
if (assignId)
136+
{
137+
project.AssignProjectId();
138+
}
139139

140-
if (projectId == null)
141-
{
142-
project.Dispose();
143-
return;
140+
var projectId = project.ProjectId;
141+
142+
if (projectId == null)
143+
{
144+
return;
145+
}
146+
147+
handler.Invoke(project, new ProjectEventArgs(projectId, project.Name));
144148
}
145-
handler.Invoke(project, new ProjectEventArgs(projectId, project));
146149
}
147150

148151
private bool IsInDesignMode()

0 commit comments

Comments
 (0)