From e1a4816e10b430fbcf1f65cb772eb2bd69392349 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sun, 14 Aug 2022 20:15:34 +0200 Subject: [PATCH] Fix duplicate paste position --- .../src/net/sf/openrocket/gui/main/RocketActions.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/gui/main/RocketActions.java b/swing/src/net/sf/openrocket/gui/main/RocketActions.java index 1e70b1129..7c768b1a1 100644 --- a/swing/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/swing/src/net/sf/openrocket/gui/main/RocketActions.java @@ -851,10 +851,18 @@ public class RocketActions { @Override public void actionPerformed(ActionEvent e) { List components = selectionModel.getSelectedComponents(); + List topComponents = new LinkedList<>(); // Components without a parent component in if (components != null) { components.sort(Comparator.comparing(c -> c.getParent() != null ? c.getParent().getChildPosition(c) : 0)); components = new ArrayList<>(components); fillInMissingSelections(components); + } else { + return; + } + for (RocketComponent c: components) { + if (!RocketComponent.listContainsParent(components, c)) { + topComponents.add(c); + } } Simulation[] sims = selectionModel.getSelectedSimulations(); @@ -877,7 +885,8 @@ public class RocketActions { if (RocketComponent.listContainsParent(duplicateComponents, component)) { pos = getPastePosition(component, component.getParent()); } else { - RocketComponent pasteParent = components.get(duplicateComponents.indexOf(component)).getParent(); + int compIdx = duplicateComponents.indexOf(component); + RocketComponent pasteParent = topComponents.get(compIdx).getParent(); pos = getPastePosition(component, pasteParent); } positions.add(pos);