From f38f381989f632bf177922ae53ef2281c85b1345 Mon Sep 17 00:00:00 2001 From: Omar Brikaa Date: Thu, 24 Jul 2025 00:39:16 +0300 Subject: [PATCH] fix: Remove flushSync from alt-lasso and elbow dragging (#9734) * Remove lasso flushSync * Remove selectedLinearElement flushSync * Early return --- packages/excalidraw/components/App.tsx | 44 +++++++++++--------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index dcb9f9838f..8bb76af45e 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -8095,16 +8095,12 @@ class App extends React.Component { this.scene, ); - flushSync(() => { - if (this.state.selectedLinearElement) { - this.setState({ - selectedLinearElement: { - ...this.state.selectedLinearElement, - segmentMidPointHoveredCoords: ret.segmentMidPointHoveredCoords, - pointerDownState: ret.pointerDownState, - }, - }); - } + this.setState({ + selectedLinearElement: { + ...this.state.selectedLinearElement, + segmentMidPointHoveredCoords: ret.segmentMidPointHoveredCoords, + pointerDownState: ret.pointerDownState, + }, }); return; } @@ -8618,23 +8614,21 @@ class App extends React.Component { pointerDownState.lastCoords.x = pointerCoords.x; pointerDownState.lastCoords.y = pointerCoords.y; if (event.altKey) { - flushSync(() => { - this.setActiveTool( - { type: "lasso", fromSelection: true }, - event.shiftKey, - ); - this.lassoTrail.startPath( - pointerDownState.origin.x, - pointerDownState.origin.y, - event.shiftKey, - ); - this.setAppState({ - selectionElement: null, - }); + this.setActiveTool( + { type: "lasso", fromSelection: true }, + event.shiftKey, + ); + this.lassoTrail.startPath( + pointerDownState.origin.x, + pointerDownState.origin.y, + event.shiftKey, + ); + this.setAppState({ + selectionElement: null, }); - } else { - this.maybeDragNewGenericElement(pointerDownState, event); + return; } + this.maybeDragNewGenericElement(pointerDownState, event); } else if (this.state.activeTool.type === "lasso") { if (!event.altKey && this.state.activeTool.fromSelection) { this.setActiveTool({ type: "selection" });