Browse Source

fix: undo when erasing elements by clicking (#4921)

* fix: undo when erasing elements by clicking

* newline remove
Aakansha Doshi 3 năm trước cách đây
mục cha
commit
6d45430344
1 tập tin đã thay đổi với 22 bổ sung19 xóa
  1. 22 19
      src/components/App.tsx

+ 22 - 19
src/components/App.tsx

@@ -2999,25 +2999,6 @@ class App extends React.Component<AppProps, AppState> {
       );
     }
     if (isEraserActive(this.state)) {
-      const draggedDistance = distance2d(
-        this.lastPointerDown!.clientX,
-        this.lastPointerDown!.clientY,
-        this.lastPointerUp!.clientX,
-        this.lastPointerUp!.clientY,
-      );
-      if (draggedDistance === 0) {
-        const scenePointer = viewportCoordsToSceneCoords(
-          { clientX: event.clientX, clientY: event.clientY },
-          this.state,
-        );
-        const hitElement = this.getElementAtPosition(
-          scenePointer.x,
-          scenePointer.y,
-        );
-        const pointerDownEvent = this.initialPointerDownState(event);
-        pointerDownEvent.hit.element = hitElement;
-        this.eraseElements(pointerDownEvent);
-      }
     }
     if (
       this.hitLinkElement &&
@@ -4422,6 +4403,28 @@ class App extends React.Component<AppProps, AppState> {
       // drag or added to selection on pointer down phase.
       const hitElement = pointerDownState.hit.element;
       if (isEraserActive(this.state)) {
+        const draggedDistance = distance2d(
+          this.lastPointerDown!.clientX,
+          this.lastPointerDown!.clientY,
+          this.lastPointerUp!.clientX,
+          this.lastPointerUp!.clientY,
+        );
+
+        if (draggedDistance === 0) {
+          const scenePointer = viewportCoordsToSceneCoords(
+            {
+              clientX: this.lastPointerUp!.clientX,
+              clientY: this.lastPointerUp!.clientY,
+            },
+            this.state,
+          );
+          const hitElement = this.getElementAtPosition(
+            scenePointer.x,
+            scenePointer.y,
+          );
+
+          pointerDownState.hit.element = hitElement;
+        }
         this.eraseElements(pointerDownState);
         return;
       }