From 7aba4267c0be98d1ef5a6ebc62d2934de00f23ca Mon Sep 17 00:00:00 2001 From: John Lewin Date: Mon, 2 Apr 2018 12:59:18 -0700 Subject: [PATCH] Release event listeners on close - Issue MatterHackers/MCCentral#3016 Switching colors leaks GuiWidgets --- ApplicationView/PrinterModels.cs | 2 -- PartPreviewWindow/PrinterTabPage.cs | 11 +++++++---- PartPreviewWindow/SliceLayerSelector.cs | 8 +++++++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ApplicationView/PrinterModels.cs b/ApplicationView/PrinterModels.cs index fa0a137ee..ae89aff75 100644 --- a/ApplicationView/PrinterModels.cs +++ b/ApplicationView/PrinterModels.cs @@ -764,8 +764,6 @@ namespace MatterHackers.MatterControl this.Connection.ReadLineReplacementString = this.Settings.GetValue(SettingsKey.read_regex); } - - public PrinterViewState ViewState { get; } = new PrinterViewState(); private PrinterSettings _settings; diff --git a/PartPreviewWindow/PrinterTabPage.cs b/PartPreviewWindow/PrinterTabPage.cs index 9cf872649..c9c6158b9 100644 --- a/PartPreviewWindow/PrinterTabPage.cs +++ b/PartPreviewWindow/PrinterTabPage.cs @@ -97,10 +97,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } }; - printer.ViewState.ViewModeChanged += (s, e) => - { - this.SetViewMode(e.ViewMode); - }; + printer.ViewState.ViewModeChanged += ViewState_ViewModeChanged; layerScrollbar = new SliceLayerSelector(printer, sceneContext) { @@ -209,6 +206,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } + private void ViewState_ViewModeChanged(object sender, ViewModeChangedEventArgs e) + { + this.SetViewMode(e.ViewMode); + } + private void ConfigurePrinter_Changed(object sender, EventArgs e) { this.ProcessOptionalTab(); @@ -400,6 +402,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow sceneContext.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged; printer.ViewState.ConfigurePrinterChanged -= ConfigurePrinter_Changed; + printer.ViewState.ViewModeChanged -= ViewState_ViewModeChanged; base.OnClosed(e); } diff --git a/PartPreviewWindow/SliceLayerSelector.cs b/PartPreviewWindow/SliceLayerSelector.cs index 2697213e4..f3e7609e3 100644 --- a/PartPreviewWindow/SliceLayerSelector.cs +++ b/PartPreviewWindow/SliceLayerSelector.cs @@ -200,7 +200,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow set => layerSlider.Value = value; } - public override void OnBoundsChanged(EventArgs e) { base.OnBoundsChanged(e); @@ -212,6 +211,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } + public override void OnClosed(ClosedEventArgs e) + { + base.OnClosed(e); + + sceneContext.ActiveLayerChanged -= ActiveLayer_Changed; + } + private void ActiveLayer_Changed(object sender, EventArgs e) { if (layerSlider != null