diff --git a/src/main/java/de/neemann/digital/draw/elements/Circuit.java b/src/main/java/de/neemann/digital/draw/elements/Circuit.java index 15139ce2f..634d4067b 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java +++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java @@ -212,6 +212,18 @@ public class Circuit implements Drawable { return null; } + public boolean isPinPos(Vector pos) { + VisualElement el = getElementAt(pos); + if (el == null) return false; + + for (Pin p : el.getPins()) + if (p.getPos().equals(pos)) + return true; + + return false; + } + + public void modified() { modified = true; } diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java index 01658c466..f9659c79b 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -216,10 +216,15 @@ public class CircuitComponent extends JComponent { if (e.getButton() == MouseEvent.BUTTON1) { if (wire != null) { circuit.add(wire); - repaint(); + Vector startPos = raster(getPosVector(e)); + if (circuit.isPinPos(startPos)) + wire = null; + else + wire = new Wire(startPos, startPos); + } else { + Vector startPos = raster(getPosVector(e)); + wire = new Wire(startPos, startPos); } - Vector startPos = raster(getPosVector(e)); - wire = new Wire(startPos, startPos); repaint(); } else { if (wire != null) {