From 03431b9c416f4e1c1c101b4481c5b5732eea72ad Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 9 Nov 2022 04:31:09 +0100 Subject: [PATCH] Fix issue in override parent updating for sub-children --- .../rocketcomponent/RocketComponent.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index 5f362cf61..f5efe4503 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1713,6 +1713,12 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } else { component.CDOverriddenBy = this.CDOverriddenBy; } + for (Iterator it = component.iterator(false); it.hasNext(); ) { + RocketComponent child = it.next(); + child.massOverriddenBy = component.massOverriddenBy; + child.CGOverriddenBy = component.CGOverriddenBy; + child.CDOverriddenBy = component.CDOverriddenBy; + } if (component instanceof AxialStage) { AxialStage nStage = (AxialStage) component; @@ -1753,9 +1759,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab if (children.remove(component)) { component.parent = null; - component.massOverriddenBy = null; - component.CGOverriddenBy = null; - component.CDOverriddenBy = null; + for (RocketComponent c : component) { + c.massOverriddenBy = null; + c.CGOverriddenBy = null; + c.CDOverriddenBy = null; + } if (component instanceof AxialStage) { AxialStage stage = (AxialStage) component;