diff --git a/src/main/java/ovh/gasser/newshapes/ui/Controller.java b/src/main/java/ovh/gasser/newshapes/ui/Controller.java index b1b7855..c1706e4 100644 --- a/src/main/java/ovh/gasser/newshapes/ui/Controller.java +++ b/src/main/java/ovh/gasser/newshapes/ui/Controller.java @@ -21,7 +21,7 @@ public class Controller { private final ShapesView view; private final SCollection model; private final Selection selection; - private boolean shiftPressed; + private Point lastMousePos; Controller(ShapesView view, SCollection model) { this.view = view; @@ -46,20 +46,16 @@ public class Controller { public void keyPressed(KeyEvent e) { handleKeyPressed(e); } - - @Override - public void keyReleased(KeyEvent e) { - handleKeyReleased(e); - } }); } private void handleMouseDragged(MouseEvent evt) { + int dx = evt.getX() - lastMousePos.x; + int dy = evt.getY() - lastMousePos.y; for (Shape shape : selection) { - int dx = evt.getX() - shape.getBounds().x; - int dy = evt.getY() - shape.getBounds().y; shape.translate(dx, dy); } + lastMousePos = evt.getPoint(); view.repaint(); } @@ -67,9 +63,10 @@ public class Controller { getTarget(evt, this.model) .ifPresentOrElse( s -> { - if (!shiftPressed) { + if (!evt.isShiftDown()) { resetSelection(); } + lastMousePos = evt.getPoint(); selection.add(s); logger.debug("Selecting {}", s); }, @@ -84,15 +81,10 @@ public class Controller { case KeyEvent.VK_C -> copySelection(); case KeyEvent.VK_A -> changeSelectionColor(); case KeyEvent.VK_H -> exportHtml(); - case KeyEvent.VK_SHIFT -> shiftPressed = true; default -> logger.warn("Pressed unhandled key: {}", evt.getKeyChar()); } } - private void handleKeyReleased(KeyEvent evt) { - if (evt.getKeyCode() == KeyEvent.VK_SHIFT) shiftPressed = false; - } - private void exportHtml() { logger.info("Exporting view to html"); try {