|
|
|
@ -2754,6 +2754,27 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
|
|
points: points.slice(0, -1),
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
const [gridX, gridY] = getGridPoint(
|
|
|
|
|
scenePointerX,
|
|
|
|
|
scenePointerY,
|
|
|
|
|
this.state.gridSize,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const [lastCommittedX, lastCommittedY] =
|
|
|
|
|
multiElement?.lastCommittedPoint ?? [0, 0];
|
|
|
|
|
|
|
|
|
|
let dxFromLastCommitted = gridX - rx - lastCommittedX;
|
|
|
|
|
let dyFromLastCommitted = gridY - ry - lastCommittedY;
|
|
|
|
|
|
|
|
|
|
if (shouldRotateWithDiscreteAngle(event)) {
|
|
|
|
|
({ width: dxFromLastCommitted, height: dyFromLastCommitted } =
|
|
|
|
|
getPerfectElementSize(
|
|
|
|
|
this.state.activeTool.type,
|
|
|
|
|
dxFromLastCommitted,
|
|
|
|
|
dyFromLastCommitted,
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isPathALoop(points, this.state.zoom.value)) {
|
|
|
|
|
setCursor(this.canvas, CURSOR_TYPE.POINTER);
|
|
|
|
|
}
|
|
|
|
@ -2761,7 +2782,10 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
|
|
mutateElement(multiElement, {
|
|
|
|
|
points: [
|
|
|
|
|
...points.slice(0, -1),
|
|
|
|
|
[scenePointerX - rx, scenePointerY - ry],
|
|
|
|
|
[
|
|
|
|
|
lastCommittedX + dxFromLastCommitted,
|
|
|
|
|
lastCommittedY + dyFromLastCommitted,
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|