diff --git a/src/LGraphCanvas.ts b/src/LGraphCanvas.ts index efed02908..d71b1ac80 100644 --- a/src/LGraphCanvas.ts +++ b/src/LGraphCanvas.ts @@ -2671,12 +2671,14 @@ export class LGraphCanvas implements ConnectionColorContext { const reroute = graph.getRerouteOnPos(e.canvasX, e.canvasY) if (reroute) { underPointer |= CanvasItem.Reroute + linkConnector.overReroute = reroute if (linkConnector.isConnecting && linkConnector.isRerouteValidDrop(reroute)) { this._highlight_pos = reroute.pos } } else { this._highlight_pos &&= undefined + linkConnector.overReroute &&= undefined } // Not over a node @@ -3947,7 +3949,14 @@ export class LGraphCanvas implements ConnectionColorContext { if (!LiteGraph.snap_highlights_node) return const { linkConnector } = this - const { overWidget } = linkConnector + const { overReroute, overWidget } = linkConnector + // Reroute highlight + if (overReroute) { + const { globalAlpha } = ctx + ctx.globalAlpha = 1 + overReroute.drawHighlight(ctx, "#ffcc00aa") + ctx.globalAlpha = globalAlpha + } // Ensure we're mousing over a node and connecting a link const node = this.node_over diff --git a/src/Reroute.ts b/src/Reroute.ts index 152ac08a9..6a3b20874 100644 --- a/src/Reroute.ts +++ b/src/Reroute.ts @@ -11,6 +11,7 @@ import type { import type { LGraphNode, NodeId } from "./LGraphNode" import type { Serialisable, SerialisableReroute } from "./types/serialisation" +import { LGraphBadge } from "./LGraphBadge" import { type LinkId, LLink } from "./LLink" import { distance } from "./measure" @@ -31,6 +32,7 @@ export interface FloatingRerouteSlot { */ export class Reroute implements Positionable, LinkSegment, Serialisable { static radius: number = 10 + static drawIdBadge: boolean = false #malloc = new Float32Array(8) @@ -413,6 +415,31 @@ export class Reroute implements Positionable, LinkSegment, Serialisable void constructor(setConnectingLinks: (value: ConnectingLink[]) => void) {