From f8b8c0e95cfaad9227a2ea3a6c3100cc9a8fbceb Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Wed, 3 Sep 2025 20:58:20 +0200 Subject: [PATCH] fix: Arrow start inside binding switch Signed-off-by: Mark Tolmacs --- packages/excalidraw/components/App.tsx | 29 ++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 396cfa3a74..8c6b58dc25 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -6284,6 +6284,18 @@ class App extends React.Component { }, { informMutation: false, isDragging: false }, ); + if (this.state.selectedLinearElement?.pointerDownState) { + this.setState({ + selectedLinearElement: { + ...this.state.selectedLinearElement, + selectedPointsIndices: [multiElement.points.length - 1], + pointerDownState: { + ...this.state.selectedLinearElement.pointerDownState, + lastClickedPoint: multiElement.points.length - 1, + }, + }, + }); + } } else { setCursor(this.interactiveCanvas, CURSOR_TYPE.POINTER); // in this branch, we're inside the commit zone, and no uncommitted @@ -8374,13 +8386,14 @@ class App extends React.Component { ), }, }; - nextSelectedElementIds = makeNextSelectedElementIds( - { [element.id]: true }, - prevState, - ); } } + nextSelectedElementIds = makeNextSelectedElementIds( + { [element.id]: true }, + prevState, + ); + return { ...prevState, bindMode: "orbit", @@ -8760,6 +8773,14 @@ class App extends React.Component { this.handleDelayedBindModeChange(element, hoveredElement); } + if ( + event.altKey && + !this.state.selectedLinearElement?.pointerDownState + ?.arrowStartIsInside + ) { + this.handleSkipBindMode(); + } + const newState = LinearElementEditor.handlePointDragging( event, this,