From 1a261a7c75ef584f92a7e3aee1b856dff5a7594a Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sun, 2 Aug 2020 17:40:03 -0400 Subject: [PATCH] [fixes #733] fixes rare bug -- rocket sometimes sends events to deleted ComponentConfigDialog instances --- .../openrocket/gui/configdialog/ComponentConfigDialog.java | 7 ++++++- swing/src/net/sf/openrocket/gui/main/RocketActions.java | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java index ca9463212..6dfae4a34 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java @@ -93,7 +93,12 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis this.pack(); } - + + public static ComponentConfigDialog getDialog() { + return dialog; + } + + /** /** * Return the configurator panel of the current component. */ diff --git a/swing/src/net/sf/openrocket/gui/main/RocketActions.java b/swing/src/net/sf/openrocket/gui/main/RocketActions.java index 828c8ceae..a220c9e8b 100644 --- a/swing/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/swing/src/net/sf/openrocket/gui/main/RocketActions.java @@ -311,6 +311,8 @@ public class RocketActions { if (isDeletable(c)) { ComponentConfigDialog.hideDialog(); + c.getRocket().removeComponentChangeListener(ComponentConfigDialog.getDialog()); + document.addUndoPosition("Delete " + c.getComponentName()); delete(c); }