Fix duplicate paste position

This commit is contained in:
SiboVG 2022-08-14 20:15:34 +02:00
parent 7bb0363e8b
commit e1a4816e10

View File

@ -851,10 +851,18 @@ public class RocketActions {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
List<RocketComponent> components = selectionModel.getSelectedComponents(); List<RocketComponent> components = selectionModel.getSelectedComponents();
List<RocketComponent> topComponents = new LinkedList<>(); // Components without a parent component in <components>
if (components != null) { if (components != null) {
components.sort(Comparator.comparing(c -> c.getParent() != null ? c.getParent().getChildPosition(c) : 0)); components.sort(Comparator.comparing(c -> c.getParent() != null ? c.getParent().getChildPosition(c) : 0));
components = new ArrayList<>(components); components = new ArrayList<>(components);
fillInMissingSelections(components); fillInMissingSelections(components);
} else {
return;
}
for (RocketComponent c: components) {
if (!RocketComponent.listContainsParent(components, c)) {
topComponents.add(c);
}
} }
Simulation[] sims = selectionModel.getSelectedSimulations(); Simulation[] sims = selectionModel.getSelectedSimulations();
@ -877,7 +885,8 @@ public class RocketActions {
if (RocketComponent.listContainsParent(duplicateComponents, component)) { if (RocketComponent.listContainsParent(duplicateComponents, component)) {
pos = getPastePosition(component, component.getParent()); pos = getPastePosition(component, component.getParent());
} else { } else {
RocketComponent pasteParent = components.get(duplicateComponents.indexOf(component)).getParent(); int compIdx = duplicateComponents.indexOf(component);
RocketComponent pasteParent = topComponents.get(compIdx).getParent();
pos = getPastePosition(component, pasteParent); pos = getPastePosition(component, pasteParent);
} }
positions.add(pos); positions.add(pos);