浏览代码

fix: undo when erasing (#4900)

Aakansha Doshi 3 年之前
父节点
当前提交
e92d133973
共有 1 个文件被更改,包括 16 次插入14 次删除
  1. 16 14
      src/components/App.tsx

+ 16 - 14
src/components/App.tsx

@@ -2999,22 +2999,24 @@ class App extends React.Component<AppProps, AppState> {
       );
     }
     if (isEraserActive(this.state)) {
-      const scenePointer = viewportCoordsToSceneCoords(
-        { clientX: event.clientX, clientY: event.clientY },
-        this.state,
+      const draggedDistance = distance2d(
+        this.lastPointerDown!.clientX,
+        this.lastPointerDown!.clientY,
+        this.lastPointerUp!.clientX,
+        this.lastPointerUp!.clientY,
       );
-      const hitElement = this.getElementAtPosition(
-        scenePointer.x,
-        scenePointer.y,
-      );
-      const pointerDownEvent = this.initialPointerDownState(event);
-      pointerDownEvent.hit.element = hitElement;
-      this.eraseElements(pointerDownEvent);
-      if (isTouchScreen) {
-        this.hitLinkElement = this.getElementLinkAtPosition(
-          scenePointer,
-          hitElement,
+      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 (