diff --git a/packages/element/src/elbowArrow.ts b/packages/element/src/elbowArrow.ts index 47497476ae..40f5a51c5f 100644 --- a/packages/element/src/elbowArrow.ts +++ b/packages/element/src/elbowArrow.ts @@ -1345,29 +1345,25 @@ const getElbowArrowData = ( : [10, 10, 10, 10], hoveredEndElement ? aabbForElement(hoveredEndElement) : [10, 10, 10, 10], ); + const startOffsets = offsetFromHeading( + startHeading, + arrow.startArrowhead + ? FIXED_BINDING_DISTANCE * 4 + : FIXED_BINDING_DISTANCE * 2, + 1, + ); + const endOffsets = offsetFromHeading( + endHeading, + arrow.endArrowhead + ? FIXED_BINDING_DISTANCE * 4 + : FIXED_BINDING_DISTANCE * 2, + 1, + ); const startElementBounds = hoveredStartElement - ? aabbForElement( - hoveredStartElement, - offsetFromHeading( - startHeading, - arrow.startArrowhead - ? FIXED_BINDING_DISTANCE - : FIXED_BINDING_DISTANCE * 2, - 1, - ), - ) + ? aabbForElement(hoveredStartElement, startOffsets) : startPointBounds; const endElementBounds = hoveredEndElement - ? aabbForElement( - hoveredEndElement, - offsetFromHeading( - endHeading, - arrow.endArrowhead - ? FIXED_BINDING_DISTANCE - : FIXED_BINDING_DISTANCE * 2, - 1, - ), - ) + ? aabbForElement(hoveredEndElement, endOffsets) : endPointBounds; const boundsOverlap = pointInsideBounds( diff --git a/packages/excalidraw/actions/actionFlip.test.tsx b/packages/excalidraw/actions/actionFlip.test.tsx index 23e4ffc123..e2a30d269a 100644 --- a/packages/excalidraw/actions/actionFlip.test.tsx +++ b/packages/excalidraw/actions/actionFlip.test.tsx @@ -73,12 +73,12 @@ describe("flipping re-centers selection", () => { API.executeAction(actionFlipHorizontal); const rec1 = h.elements.find((el) => el.id === "rec1")!; - expect(rec1.x).toBeCloseTo(100, 0); - expect(rec1.y).toBeCloseTo(100, 0); + expect(rec1.x).toBeCloseTo(97.8678, 0); + expect(rec1.y).toBeCloseTo(97.444, 0); const rec2 = h.elements.find((el) => el.id === "rec2")!; - expect(rec2.x).toBeCloseTo(220, 0); - expect(rec2.y).toBeCloseTo(250, 0); + expect(rec2.x).toBeCloseTo(218, 0); + expect(rec2.y).toBeCloseTo(247, 0); }); });