From 210dc85c8cd43da0f78b84b59b650de7db1a00a8 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Wed, 26 Nov 2025 21:02:36 +0100 Subject: [PATCH] fix: do not finalize multi-point lines if binding not enabled (#10410) * fix: do not finalize multi-point lines if binding not enabled * refactor --- packages/excalidraw/components/App.tsx | 37 +++++++++++++++----------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 34d4f6154b..57d159651e 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -6396,12 +6396,15 @@ class App extends React.Component { setCursorForShape(this.interactiveCanvas, this.state); if (lastPoint === lastCommittedPoint) { - const hoveredElement = getHoveredElementForBinding( - pointFrom(scenePointerX, scenePointerY), - this.scene.getNonDeletedElements(), - this.scene.getNonDeletedElementsMap(), - (el) => maxBindingDistance_simple(this.state.zoom), - ); + const hoveredElement = + isArrowElement(this.state.newElement) && + isBindingEnabled(this.state) && + getHoveredElementForBinding( + pointFrom(scenePointerX, scenePointerY), + this.scene.getNonDeletedElements(), + this.scene.getNonDeletedElementsMap(), + (el) => maxBindingDistance_simple(this.state.zoom), + ); if (hoveredElement) { this.actionManager.executeAction(actionFinalize, "ui", { event: event.nativeEvent, @@ -8464,16 +8467,18 @@ class App extends React.Component { const { x: rx, y: ry } = multiElement; const { lastCommittedPoint } = selectedLinearElement; - const hoveredElementForBinding = getHoveredElementForBinding( - pointFrom( - this.lastPointerMoveCoords?.x ?? - rx + multiElement.points[multiElement.points.length - 1][0], - this.lastPointerMoveCoords?.y ?? - ry + multiElement.points[multiElement.points.length - 1][1], - ), - this.scene.getNonDeletedElements(), - this.scene.getNonDeletedElementsMap(), - ); + const hoveredElementForBinding = + isBindingEnabled(this.state) && + getHoveredElementForBinding( + pointFrom( + this.lastPointerMoveCoords?.x ?? + rx + multiElement.points[multiElement.points.length - 1][0], + this.lastPointerMoveCoords?.y ?? + ry + multiElement.points[multiElement.points.length - 1][1], + ), + this.scene.getNonDeletedElements(), + this.scene.getNonDeletedElementsMap(), + ); // clicking inside commit zone → finalize arrow if (