diff --git a/packages/element/src/binding.ts b/packages/element/src/binding.ts index c3bcd72868..8c5b3f9691 100644 --- a/packages/element/src/binding.ts +++ b/packages/element/src/binding.ts @@ -698,17 +698,24 @@ export const maybeSuggestBindingsForBindingElementAtCoords = ( linearElement: NonDeleted, startOrEndOrBoth: "start" | "end" | "both", scene: Scene, + pointerCoords: GlobalPoint, ): ExcalidrawBindableElement[] => { - const startCoords = LinearElementEditor.getPointAtIndexGlobalCoordinates( - linearElement, - 0, - scene.getNonDeletedElementsMap(), - ); - const endCoords = LinearElementEditor.getPointAtIndexGlobalCoordinates( - linearElement, - -1, - scene.getNonDeletedElementsMap(), - ); + const startCoords = + startOrEndOrBoth === "start" + ? pointerCoords + : LinearElementEditor.getPointAtIndexGlobalCoordinates( + linearElement, + 0, + scene.getNonDeletedElementsMap(), + ); + const endCoords = + startOrEndOrBoth === "end" + ? pointerCoords + : LinearElementEditor.getPointAtIndexGlobalCoordinates( + linearElement, + -1, + scene.getNonDeletedElementsMap(), + ); const startHovered = getHoveredElementForBinding( startCoords, scene.getNonDeletedElements(), diff --git a/packages/element/src/linearElementEditor.ts b/packages/element/src/linearElementEditor.ts index b7e5925293..55658d78c2 100644 --- a/packages/element/src/linearElementEditor.ts +++ b/packages/element/src/linearElementEditor.ts @@ -466,6 +466,7 @@ export class LinearElementEditor { ? "start" : "end", app.scene, + pointFrom(scenePointerX, scenePointerY), ); } } diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 619604897c..5ee02555b6 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -6210,6 +6210,7 @@ class App extends React.Component { newElement, "end", this.scene, + pointFrom(scenePointerX, scenePointerY), ), }); } else { @@ -9380,6 +9381,7 @@ class App extends React.Component { newElement, "end", this.scene, + pointFrom(pointerCoords.x, pointerCoords.y), ), }); }