From 644404b0706f935e3b63f332a1aeeb84c73c48bc Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sun, 5 Apr 2020 10:30:08 -0400 Subject: [PATCH] [fix] Adds duplicate guard when add a 'ComponentChangeListener' to the rocket --- core/src/net/sf/openrocket/rocketcomponent/Rocket.java | 4 +++- .../sf/openrocket/gui/configdialog/ComponentConfigDialog.java | 4 ---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java index f29a5f4f5..c65b05459 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -413,7 +413,9 @@ public class Rocket extends ComponentAssembly { @Override public void addComponentChangeListener(ComponentChangeListener l) { checkState(); - listenerList.add(l); + if( ! listenerList.contains(l)) { + listenerList.add(l); + } log.trace("Added ComponentChangeListener " + l + ", current number of listeners is " + listenerList.size()); } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java index 82b3864cc..38bc115e4 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java @@ -60,10 +60,6 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis * @param component Component to configure. */ private void setComponent(OpenRocketDocument document, RocketComponent component) { - if (this.document != null) { - this.document.getRocket().removeComponentChangeListener(this); - } - if (configurator != null) { // Remove listeners by setting all applicable models to null GUIUtil.setNullModels(configurator); // null-safe