fix drag of multiple selected shapes with shift #2

Merged
thib8956 merged 1 commits from test into master 2026-03-19 13:52:23 +00:00
Showing only changes of commit ce6d0b0815 - Show all commits

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 {