fix: fix resize and dragging

- AbstractShape: make bounds protected for subclass access
- STriangle: refactor resize logic
- SCircle: refactor resize logic (preserves equal dimensions)
- SText: add reasonable default bounds for hit testing
This commit is contained in:
2026-03-26 23:54:31 +01:00
parent fbe3714182
commit 3a6f98455a
4 changed files with 47 additions and 50 deletions

View File

@@ -18,21 +18,22 @@ public class STriangle extends AbstractShape {
@Override
public void resize(ResizeHandle handle, int dx, int dy) {
Rectangle bounds = getBounds();
int delta = Math.max(Math.abs(dx), Math.abs(dy));
boolean shrink = switch (handle) {
case E -> dx < 0;
case W -> dx > 0;
case N -> dy > 0;
case S -> dy < 0;
case SE -> (dx < 0 || dy < 0);
case NW -> (dx > 0 || dy > 0);
case NE -> (dx < 0);
case SW -> (dx > 0);
case E, W -> (dx < 0);
case N, S -> (dy < 0);
case NE -> (dx < 0 || dy > 0);
case SW -> (dx > 0 || dy < 0);
default -> false;
};
int sizeChange = shrink ? -delta : delta;
switch (handle) {
case SE, E, W -> {
bounds.width += sizeChange;