소스 검색

fix for #1106 - Weird behavior when resize + shift a 2-point li… (#1152)

Co-authored-by: dwelle <luzar.david@gmail.com>
José Quinto 5 년 전
부모
커밋
8fea75b84f
1개의 변경된 파일22개의 추가작업 그리고 32개의 파일을 삭제
  1. 22 32
      src/components/App.tsx

+ 22 - 32
src/components/App.tsx

@@ -1864,39 +1864,31 @@ export class App extends React.Component<any, AppState> {
       pointerY: number,
       perfect: boolean,
     ) => {
-      const p1 = element.points[pointIndex];
-      if (perfect) {
-        const absPx = p1[0] + element.x;
-        const absPy = p1[1] + element.y;
+      const [px, py] = element.points[pointIndex];
+      let x = element.x + deltaX;
+      let y = element.y + deltaY;
+      let pointX = px - deltaX;
+      let pointY = py - deltaY;
 
+      if (perfect) {
         const { width, height } = getPerfectElementSize(
           element.type,
-          pointerX - element.x - p1[0],
-          pointerY - element.y - p1[1],
+          px + element.x - pointerX,
+          py + element.y - pointerY,
         );
-
-        const dx = element.x + width + p1[0];
-        const dy = element.y + height + p1[1];
-        mutateElement(element, {
-          x: dx,
-          y: dy,
-          points: element.points.map((point, i) =>
-            i === pointIndex
-              ? ([absPx - element.x, absPy - element.y] as const)
-              : point,
-          ),
-        });
-      } else {
-        mutateElement(element, {
-          x: element.x + deltaX,
-          y: element.y + deltaY,
-          points: element.points.map((point, i) =>
-            i === pointIndex
-              ? ([p1[0] - deltaX, p1[1] - deltaY] as const)
-              : point,
-          ),
-        });
+        x = px + element.x - width;
+        y = py + element.y - height;
+        pointX = width;
+        pointY = height;
       }
+
+      mutateElement(element, {
+        x,
+        y,
+        points: element.points.map((point, i) =>
+          i === pointIndex ? ([pointX, pointY] as const) : point,
+        ),
+      });
     };
 
     const arrowResizeEnd = (
@@ -1908,7 +1900,7 @@ export class App extends React.Component<any, AppState> {
       pointerY: number,
       perfect: boolean,
     ) => {
-      const p1 = element.points[pointIndex];
+      const [px, py] = element.points[pointIndex];
       if (perfect) {
         const { width, height } = getPerfectElementSize(
           element.type,
@@ -1923,9 +1915,7 @@ export class App extends React.Component<any, AppState> {
       } else {
         mutateElement(element, {
           points: element.points.map((point, i) =>
-            i === pointIndex
-              ? ([p1[0] + deltaX, p1[1] + deltaY] as const)
-              : point,
+            i === pointIndex ? ([px + deltaX, py + deltaY] as const) : point,
           ),
         });
       }