Explorar el Código

fix: lasso dragging should snap too

Ryan Di hace 2 meses
padre
commit
b7762e5a92
Se han modificado 2 ficheros con 8 adiciones y 2 borrados
  1. 1 1
      packages/excalidraw/components/App.tsx
  2. 7 1
      packages/excalidraw/snapping.ts

+ 1 - 1
packages/excalidraw/components/App.tsx

@@ -6601,7 +6601,7 @@ class App extends React.Component<AppProps, AppState> {
       // For lasso tool, if we hit an element, select it immediately like normal selection
       if (pointerDownState.hit.element && !hitSelectedElement) {
         this.setState((prevState) => {
-          let nextSelectedElementIds: { [id: string]: true } = {
+          const nextSelectedElementIds: { [id: string]: true } = {
             ...prevState.selectedElementIds,
             [pointerDownState.hit.element!.id]: true,
           };

+ 7 - 1
packages/excalidraw/snapping.ts

@@ -169,8 +169,14 @@ export const isSnappingEnabled = ({
   selectedElements: NonDeletedExcalidrawElement[];
 }) => {
   if (event) {
+    // Allow snapping for lasso tool when dragging selected elements
+    // but not during lasso selection phase
+    const isLassoDragging =
+      app.state.activeTool.type === "lasso" &&
+      app.state.selectedElementsAreBeingDragged;
+
     return (
-      app.state.activeTool.type !== "lasso" &&
+      (app.state.activeTool.type !== "lasso" || isLassoDragging) &&
       ((app.state.objectsSnapModeEnabled && !event[KEYS.CTRL_OR_CMD]) ||
         (!app.state.objectsSnapModeEnabled &&
           event[KEYS.CTRL_OR_CMD] &&