diff --git a/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java b/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java index 01e063025..b11bb9fcd 100644 --- a/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java +++ b/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java @@ -454,6 +454,7 @@ public class CircuitBuilder implements BuilderInterface { private int createStateVar(int splitterXPos, int y, Circuit circuit, String name) { ArrayList outputs = sequentialVars; + outputs.sort(Comparator.comparing(Variable::getIdentifier)); circuit.add(new VisualElement(Splitter.DESCRIPTION.getName()) .setAttribute(Keys.OUTPUT_SPLIT, "" + outputs.size()) @@ -472,7 +473,7 @@ public class CircuitBuilder implements BuilderInterface { for (int i = 0; i < outputs.size(); i++) { circuit.add(new VisualElement(Tunnel.DESCRIPTION.getName()) - .setAttribute(Keys.NETNAME, outputs.get(outputs.size()-i-1).getIdentifier()) + .setAttribute(Keys.NETNAME, outputs.get(i).getIdentifier()) .setRotation(2) .setPos(new Vector(splitterXPos - SIZE, y + i * SIZE)) .setShapeFactory(shapeFactory)); diff --git a/src/main/java/de/neemann/digital/fsm/Transition.java b/src/main/java/de/neemann/digital/fsm/Transition.java index 6fc480b55..163ed2f30 100644 --- a/src/main/java/de/neemann/digital/fsm/Transition.java +++ b/src/main/java/de/neemann/digital/fsm/Transition.java @@ -77,7 +77,8 @@ public class Transition extends Movable { if (!isInitialTransition()) { for (State s : states) - addRepulsive(s.getPos(), 2000); + if (s != fromState && s != toState) + addRepulsive(s.getPos(), 2000); for (Transition t : transitions) if (t != this) diff --git a/src/main/java/de/neemann/digital/gui/components/table/ReorderInputs.java b/src/main/java/de/neemann/digital/gui/components/table/ReorderInputs.java index d37b77448..dc01a4a0f 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/ReorderInputs.java +++ b/src/main/java/de/neemann/digital/gui/components/table/ReorderInputs.java @@ -60,8 +60,7 @@ public class ReorderInputs { */ public TruthTable reorder() throws ExpressionException { ArrayList newVars = new ArrayList<>(); - ArrayList deletedVars = new ArrayList<>(); - deletedVars.addAll(table.getVars()); + ArrayList deletedVars = new ArrayList<>(table.getVars()); for (String name : names) { Variable found = null; @@ -81,6 +80,7 @@ public class ReorderInputs { throw new ExpressionException(Lang.get("err_tableBecomesToSmall")); TruthTable newTable = new TruthTable(newVars); + newTable.setModelAnalyzerInfo(table.getModelAnalyzerInfo()); for (int j = 0; j < table.getResultCount(); j++) newTable.addResult(table.getResultName(j)); diff --git a/src/main/java/de/neemann/digital/gui/components/table/ReorderOutputs.java b/src/main/java/de/neemann/digital/gui/components/table/ReorderOutputs.java index a5c6ccc92..1f45585a6 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/ReorderOutputs.java +++ b/src/main/java/de/neemann/digital/gui/components/table/ReorderOutputs.java @@ -58,6 +58,7 @@ public class ReorderOutputs { */ public TruthTable reorder() throws ExpressionException { TruthTable newTable = new TruthTable(table.getVars()); + newTable.setModelAnalyzerInfo(table.getModelAnalyzerInfo()); for (String name : names) { for (int i = 0; i < table.getResultCount(); i++) if (table.getResultName(i).equals(name)) {