From 87d89aa090885f4735b04fdea71758de03c77f77 Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Wed, 5 Nov 2025 22:53:45 +0100 Subject: [PATCH] fix: Hovered arrow mode highlight Signed-off-by: Mark Tolmacs --- packages/excalidraw/components/App.tsx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index d3dda4941b..964959d54b 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -245,6 +245,8 @@ import { mutateElement, getElementBounds, doBoundsIntersect, + isPointInElement, + maxBindingGap_simple, } from "@excalidraw/element"; import type { GlobalPoint, LocalPoint, Radians } from "@excalidraw/math"; @@ -6543,6 +6545,27 @@ class App extends React.Component { return; } + if (this.state.activeTool.type === "arrow") { + const hit = getHoveredElementForBinding( + pointFrom(scenePointerX, scenePointerY), + this.scene.getNonDeletedElements(), + this.scene.getNonDeletedElementsMap(), + (el) => maxBindingGap_simple(el, el.width, el.height, this.state.zoom), + ); + if ( + hit && + !isPointInElement( + pointFrom(scenePointerX, scenePointerY), + hit, + this.scene.getNonDeletedElementsMap(), + ) + ) { + this.setState({ + suggestedBinding: hit, + }); + } + } + const hasDeselectedButton = Boolean(event.buttons); if ( hasDeselectedButton ||