From e5ec38f22776d51683d8c9231cce4be7e760d4f9 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Tue, 31 May 2022 03:59:29 +0200 Subject: [PATCH] Fix error in component duplication --- .../sf/openrocket/gui/main/RocketActions.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/main/RocketActions.java b/swing/src/net/sf/openrocket/gui/main/RocketActions.java index 0bc11a5a3..6e389d1b5 100644 --- a/swing/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/swing/src/net/sf/openrocket/gui/main/RocketActions.java @@ -830,24 +830,35 @@ public class RocketActions { Simulation[] sims = selectionModel.getSelectedSimulations(); if (isCopyable(components)) { - List duplicateComponents = new LinkedList<>(copyComponentsMaintainParent(components)); + ComponentConfigDialog.disposeDialog(); + List copiedComponents = new LinkedList<>(copyComponentsMaintainParent(components)); + + OpenRocketClipboard.setClipboard(copiedComponents); + + copiedComponents = new LinkedList<>(OpenRocketClipboard.getClipboardComponents()); + List pasted = new LinkedList<>(); + for (RocketComponent component : copiedComponents) { + pasted.add(component.copy()); + } List> positions = new LinkedList<>(); - for (RocketComponent component : duplicateComponents) { + for (RocketComponent component : pasted) { positions.add(getPastePosition(component)); } - if (duplicateComponents.size() == 1) { - document.addUndoPosition("Duplicate " + duplicateComponents.get(0).getComponentName()); + if (pasted.size() == 1) { + document.addUndoPosition("Duplicate " + pasted.get(0).getComponentName()); } else { document.addUndoPosition("Duplicate components"); } - for (int i = 0; i < duplicateComponents.size(); i++) { - positions.get(i).getU().addChild(duplicateComponents.get(i), positions.get(i).getV()); + for (int i = 0; i < pasted.size(); i++) { + positions.get(i).getU().addChild(pasted.get(i), positions.get(i).getV()); } - selectionModel.setSelectedComponents(duplicateComponents); + selectionModel.setSelectedComponents(pasted); + + parentFrame.selectTab(BasicFrame.COMPONENT_TAB); } else if (sims != null && sims.length > 0) { ArrayList copySims = new ArrayList();