Fix custom widgets not receiving pointermove events (#335)

This commit is contained in:
filtered
2024-11-23 02:45:39 +11:00
committed by GitHub
parent 1f572b41f1
commit ae6422bad1
2 changed files with 20 additions and 4 deletions

View File

@@ -2947,8 +2947,17 @@ export class LGraphCanvas {
}
// Resize corner
if (this.canvas && !e.ctrlKey) {
if (node.inResizeCorner(e.canvasX, e.canvasY)) underPointer |= CanvasItem.ResizeSe
if (node.inResizeCorner(e.canvasX, e.canvasY)) {
underPointer |= CanvasItem.ResizeSe
} else {
// Legacy widget mouse callbacks for pointermove events
const widget = node.getWidgetOnPos(e.canvasX, e.canvasY)
if (widget?.mouse) {
const x = e.canvasX - node.pos[0]
const y = e.canvasY - node.pos[1]
this.dirty_canvas = widget.mouse(e, [x, y], node)
}
}
} else {
// Not over a node

View File

@@ -1,6 +1,6 @@
import { CanvasColour, Point, Size } from "../interfaces"
import type { LGraphCanvas, LGraphNode } from "../litegraph"
import type { CanvasMouseEvent } from "./events"
import type { CanvasMouseEvent, CanvasPointerEvent } from "./events"
export interface IWidgetOptions<TValue = unknown> extends Record<string, unknown> {
on?: string
@@ -135,7 +135,14 @@ export interface IBaseWidget<TElement extends HTMLElement = HTMLElement> {
onRemove?(): void
beforeQueued?(): void
mouse?(event: CanvasMouseEvent, arg1: number[], node: LGraphNode): boolean
/**
* Simple callback for pointer events, allowing custom widgets to events relevant to them.
* @param event The pointer event that triggered this callback
* @param pointerOffset Offset of the pointer relative to {@link node.pos}
* @param node The node this widget belongs to
* @todo Expose CanvasPointer API to custom widgets
*/
mouse?(event: CanvasPointerEvent, pointerOffset: Point, node: LGraphNode): boolean
draw?(
ctx: CanvasRenderingContext2D,
node: LGraphNode,