From e35748faa4b9eb841de26e883b47a176031251cd Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Tue, 26 Nov 2024 03:05:50 +1100 Subject: [PATCH] Fix widget.mouse callback does not receive pointerup events (#342) * Provide pointerup events to widget.mouse callback * Fix regression in widget mouse cb pointerup events are now sent to mouse() callback regardless of CanvasPointer state. --- src/LGraphCanvas.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/LGraphCanvas.ts b/src/LGraphCanvas.ts index 6418ec5bcb..ca1cbae35f 100644 --- a/src/LGraphCanvas.ts +++ b/src/LGraphCanvas.ts @@ -2656,7 +2656,11 @@ export class LGraphCanvas { ) break default: - if (widget.mouse) this.dirty_canvas = widget.mouse(e, [x, y], node) + // Legacy custom widget callback + if (widget.mouse) { + const result = widget.mouse(e, [x, y], node) + if (result != null) this.dirty_canvas = result + } break } @@ -2666,7 +2670,17 @@ export class LGraphCanvas { node.graph._version++ } - pointer.finally = () => this.node_widget = null + // Clean up state var + pointer.finally = () => { + // Legacy custom widget callback + if (widget.mouse) { + const { eUp } = pointer + const { canvasX, canvasY } = eUp + widget.mouse(eUp, [canvasX - node[0], canvasY - node[1]], node) + } + + this.node_widget = null + } function setWidgetValue( canvas: LGraphCanvas,