From b43260d97be0cd36faaa630595c299963de2cb6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rk=20Tolm=C3=A1cs?= Date: Fri, 6 Feb 2026 15:01:07 +0100 Subject: [PATCH] fix: Other binding converted from fixed to orbit unconditionally (#10748) * fix: Other binding converted from fixed to orbit unconditionally Signed-off-by: Mark Tolmacs * fix: New arrow creation Signed-off-by: Mark Tolmacs * fix: Alt point setting on inside binding Signed-off-by: Mark Tolmacs * fix: Initial arrow creation with Alt Signed-off-by: Mark Tolmacs --------- Signed-off-by: Mark Tolmacs --- packages/element/src/binding.ts | 14 +++++++++----- packages/excalidraw/components/App.tsx | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/element/src/binding.ts b/packages/element/src/binding.ts index c763b6e21f..afc67d7afd 100644 --- a/packages/element/src/binding.ts +++ b/packages/element/src/binding.ts @@ -810,10 +810,13 @@ const getBindingStrategyForDraggingBindingElementEndpoints_simple = ( elementsMap, ); - const other: BindingStrategy = - otherBindableElement && - !otherFocusPointIsInElement && - appState.selectedLinearElement?.initialState.altFocusPoint + const otherNeverOverride = opts?.newArrow + ? appState.selectedLinearElement?.initialState.arrowStartIsInside + : otherBinding?.mode === "inside"; + const other: BindingStrategy = !otherNeverOverride + ? otherBindableElement && + !otherFocusPointIsInElement && + appState.selectedLinearElement?.initialState.altFocusPoint ? { mode: "orbit", element: otherBindableElement, @@ -832,7 +835,8 @@ const getBindingStrategyForDraggingBindingElementEndpoints_simple = ( elementsMap, ) || otherEndpoint, } - : { mode: undefined }; + : { mode: undefined } + : { mode: undefined }; return { start: startDragged ? current : other, diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index fa9a02b492..88871adde2 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -8743,6 +8743,7 @@ class App extends React.Component { selectedPointsIndices: [endIdx], initialState: { ...linearElementEditor.initialState, + arrowStartIsInside: event.altKey, lastClickedPoint: endIdx, origin: pointFrom( pointerDownState.origin.x,