fix: lasso dragging should snap too

This commit is contained in:
Ryan Di
2025-07-14 18:58:29 +10:00
parent 993eaa361b
commit b7762e5a92
2 changed files with 8 additions and 2 deletions

View File

@ -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 // For lasso tool, if we hit an element, select it immediately like normal selection
if (pointerDownState.hit.element && !hitSelectedElement) { if (pointerDownState.hit.element && !hitSelectedElement) {
this.setState((prevState) => { this.setState((prevState) => {
let nextSelectedElementIds: { [id: string]: true } = { const nextSelectedElementIds: { [id: string]: true } = {
...prevState.selectedElementIds, ...prevState.selectedElementIds,
[pointerDownState.hit.element!.id]: true, [pointerDownState.hit.element!.id]: true,
}; };

View File

@ -169,8 +169,14 @@ export const isSnappingEnabled = ({
selectedElements: NonDeletedExcalidrawElement[]; selectedElements: NonDeletedExcalidrawElement[];
}) => { }) => {
if (event) { 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 ( 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]) ||
(!app.state.objectsSnapModeEnabled && (!app.state.objectsSnapModeEnabled &&
event[KEYS.CTRL_OR_CMD] && event[KEYS.CTRL_OR_CMD] &&