From 1b8f5ae933dd69099a316f2d007a938fd8d2a6aa Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 17 Mar 2019 18:38:27 +0100 Subject: [PATCH] fixes #262 --- .../gui/components/CircuitComponent.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) 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 58d4de36b..795b58c49 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -2181,7 +2181,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe private final class MouseControllerRun extends MouseController { - private boolean dragHandled; + private VisualElement draggedElement; private MouseControllerRun(Cursor cursor) { super(cursor); @@ -2192,9 +2192,9 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe VisualElement ve = getInteractiveElementAt(e); if (ve != null) { interact(e, ve::elementPressed); - dragHandled = true; + draggedElement = ve; } else - dragHandled = false; + draggedElement = null; } private VisualElement getInteractiveElementAt(MouseEvent e) { @@ -2208,9 +2208,10 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe @Override void released(MouseEvent e) { - VisualElement ve = getInteractiveElementAt(e); - if (ve != null) - interact(e, ve::elementReleased); + if (draggedElement != null) { + interact(e, draggedElement::elementReleased); + draggedElement = null; + } } @Override @@ -2222,10 +2223,11 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe @Override boolean dragged(MouseEvent e) { - VisualElement ve = getInteractiveElementAt(e); - if (ve != null) - interact(e, ve::elementDragged); - return dragHandled; + if (draggedElement != null) { + interact(e, draggedElement::elementDragged); + return true; + } else + return false; } private void interact(MouseEvent e, Actor actor) {