fix drag of multiple selected shapes with shift

This commit was merged in pull request #2.
This commit is contained in:
2026-03-19 14:51:12 +01:00
parent 02dd84c1f4
commit ce6d0b0815

View File

@@ -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 {