From 2bb3a8aab0939cbac16a5ae1a26fe1e8328ebbf3 Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Wed, 12 Nov 2025 18:21:29 +0100 Subject: [PATCH] fix: Finalize arrow now truly finalzes Signed-off-by: Mark Tolmacs --- packages/excalidraw/components/App.tsx | 34 +++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 6e5722f2a4..c672493c8e 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -6399,10 +6399,36 @@ class App extends React.Component { this.scene.getNonDeletedElementsMap(), (el) => maxBindingDistance_simple(this.state.zoom), ); - - if ( - // Finalize arrow if we're inside the commit zone - hoveredElement || + if (hoveredElement) { + this.actionManager.executeAction(actionFinalize, "ui", { + event: event.nativeEvent, + sceneCoords: { + x: scenePointerX, + y: scenePointerY, + }, + }); + this.setState({ suggestedBinding: null, startBoundElement: null }); + if (!this.state.activeTool.locked) { + resetCursor(this.interactiveCanvas); + this.setState((prevState) => ({ + newElement: null, + activeTool: updateActiveTool(this.state, { + type: this.state.preferredSelectionTool.type, + }), + selectedElementIds: makeNextSelectedElementIds( + { + ...prevState.selectedElementIds, + [multiElement.id]: true, + }, + prevState, + ), + selectedLinearElement: new LinearElementEditor( + multiElement, + this.scene.getNonDeletedElementsMap(), + ), + })); + } + } else if ( // if we haven't yet created a temp point and we're beyond commit-zone // threshold, add a point pointDistance(