fix: Turn into inside bind when angle locked (#10479)

Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
This commit is contained in:
Márk Tolmács
2025-12-09 19:36:28 +01:00
committed by GitHub
parent 8d18078f5c
commit bf4c65f483
4 changed files with 36 additions and 31 deletions
+22 -2
View File
@@ -151,6 +151,7 @@ export const bindOrUnbindBindingElement = (
opts?: {
newArrow?: boolean;
altKey?: boolean;
angleLocked?: boolean;
initialBinding?: boolean;
},
) => {
@@ -561,7 +562,7 @@ export const getBindingStrategyForDraggingBindingElementEndpoints = (
appState: AppState,
opts?: {
newArrow?: boolean;
shiftKey?: boolean;
angleLocked?: boolean;
altKey?: boolean;
finalize?: boolean;
initialBinding?: boolean;
@@ -597,7 +598,7 @@ const getBindingStrategyForDraggingBindingElementEndpoints_simple = (
appState: AppState,
opts?: {
newArrow?: boolean;
shiftKey?: boolean;
angleLocked?: boolean;
altKey?: boolean;
finalize?: boolean;
initialBinding?: boolean;
@@ -770,6 +771,12 @@ const getBindingStrategyForDraggingBindingElementEndpoints_simple = (
}
: { mode: null };
const otherEndpoint = LinearElementEditor.getPointAtIndexGlobalCoordinates(
arrow,
startDragged ? -1 : 0,
elementsMap,
);
const other: BindingStrategy =
otherBindableElement &&
!otherFocusPointIsInElement &&
@@ -779,6 +786,19 @@ const getBindingStrategyForDraggingBindingElementEndpoints_simple = (
element: otherBindableElement,
focusPoint: appState.selectedLinearElement.initialState.altFocusPoint,
}
: opts?.angleLocked && otherBindableElement
? {
mode: "orbit",
element: otherBindableElement,
focusPoint:
projectFixedPointOntoDiagonal(
arrow,
otherEndpoint,
otherBindableElement,
startDragged ? "end" : "start",
elementsMap,
) || otherEndpoint,
}
: { mode: undefined };
return {