Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 280d310

Browse files
authored
Merge pull request #9441 from mono/minor-scaffolder-clean-up
Dispose eventhandlers when page is disposed
2 parents 198cfdd + 3c55ef3 commit 280d310

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderTemplateSelectPage.cs

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2525
// THE SOFTWARE.
2626
using System;
27-
using System.Threading;
28-
using System.Threading.Tasks;
2927
using MonoDevelop.Core;
3028
using MonoDevelop.Ide;
3129
using Xwt;
@@ -36,12 +34,14 @@ namespace MonoDevelop.AspNetCore.Scaffolding
3634
class ScaffolderTemplateSelectPage : ScaffolderWizardPageBase
3735
{
3836
ListBox listBox;
39-
ScaffolderArgs args;
37+
readonly ScaffolderArgs args;
38+
ScaffolderBase [] scaffolders;
4039

4140
public event EventHandler ScaffolderSelected;
41+
4242
public ScaffolderTemplateSelectPage (ScaffolderArgs args) : base (args)
4343
{
44-
this.SubSubTitle = GettextCatalog.GetString ("Select Scaffolder");
44+
SubSubTitle = GettextCatalog.GetString ("Select Scaffolder");
4545
this.args = args;
4646
}
4747

@@ -67,7 +67,7 @@ protected override Widget GetMainControl ()
6767

6868
var listStore = new ListStore (icon, name);
6969

70-
var scaffolders = GetScaffolders ().Value;
70+
scaffolders = GetScaffolders ().Value;
7171

7272
foreach (var scaffolder in scaffolders) {
7373
var row = listStore.AddRow ();
@@ -84,12 +84,31 @@ protected override Widget GetMainControl ()
8484
listBox.DataSource = listStore;
8585
listBox.HeightRequest = 300;
8686
listBox.WidthRequest = 300;
87-
listBox.SelectionChanged += (sender, e) => Args.Scaffolder = scaffolders [listBox.SelectedRow];
88-
listBox.RowActivated += (sender, e) => ScaffolderSelected?.Invoke (sender, e);
87+
listBox.SelectionChanged += SelectionChanged;
88+
listBox.RowActivated += RowActivated;
8989
listBox.SelectRow (0);
9090
listBox.FocusedRow = 0;
9191
listBox.SetFocus ();
9292
return listBox;
9393
}
94-
}
94+
95+
void SelectionChanged(object sender, EventArgs e)
96+
{
97+
Args.Scaffolder = scaffolders [listBox.SelectedRow];
98+
}
99+
100+
void RowActivated (object sender, EventArgs e)
101+
{
102+
ScaffolderSelected?.Invoke (sender, e);
103+
}
104+
105+
protected override void Dispose (bool disposing)
106+
{
107+
if (listBox != null) {
108+
listBox.SelectionChanged -= SelectionChanged;
109+
listBox.RowActivated -= RowActivated;
110+
}
111+
base.Dispose (disposing);
112+
}
113+
}
95114
}

0 commit comments

Comments
 (0)