fix: use correct widget name for proxy widget matching

- Extract getWidgetName helper to properly resolve widget names
- For proxy widgets, use _overlay.widgetName instead of the proxy name
- Fix widget filtering in onConfigure to compare correctly
- Remove duplicate useWidgetValueStore().unregisterNode call from LGraph

Amp-Thread-ID: https://ampcode.com/threads/T-019c2ce0-df46-72df-adf8-74703d3f019c
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Alexander Brown
2026-02-05 00:18:20 -08:00
parent ffac1c1874
commit 2288c259d0
3 changed files with 14 additions and 9 deletions

View File

@@ -115,9 +115,11 @@ const onConfigure = function (
if (isActiveGraph && w instanceof DOMWidgetImpl) setWidget(w)
return [w]
})
this.widgets = this.widgets.filter(
(w) => !isProxyWidget(w) && !parsed.some(([, name]) => w.name === name)
)
this.widgets = this.widgets.filter((w) => {
if (isProxyWidget(w)) return false
const widgetName = w.name
return !parsed.some(([, name]) => widgetName === name)
})
this.widgets.push(...newWidgets)
canvasStore.canvas?.setDirty(true, true)
@@ -153,7 +155,7 @@ function newProxyWidget(
isProxyWidget: true,
last_y: undefined,
label: name,
name: widgetName,
name,
node: subgraphNode,
onRemove: undefined,
promoted: undefined,

View File

@@ -57,15 +57,20 @@ export function demoteWidget(
widget.promoted = false
}
function getWidgetName(w: IBaseWidget): string {
return isProxyWidget(w) ? w._overlay.widgetName : w.name
}
export function matchesWidgetItem([nodeId, widgetName]: [string, string]) {
return ([n, w]: WidgetItem) => n.id == nodeId && w.name === widgetName
return ([n, w]: WidgetItem) =>
n.id == nodeId && getWidgetName(w) === widgetName
}
export function matchesPropertyItem([n, w]: WidgetItem) {
return ([nodeId, widgetName]: [string, string]) =>
n.id == nodeId && w.name === widgetName
n.id == nodeId && getWidgetName(w) === widgetName
}
export function widgetItemToProperty([n, w]: WidgetItem): [string, string] {
return [`${n.id}`, w.name]
return [`${n.id}`, getWidgetName(w)]
}
function getParentNodes(): SubgraphNode[] {

View File

@@ -8,7 +8,6 @@ import type { UUID } from '@/lib/litegraph/src/utils/uuid'
import { createUuidv4, zeroUuid } from '@/lib/litegraph/src/utils/uuid'
import { useLayoutMutations } from '@/renderer/core/layout/operations/layoutMutations'
import { LayoutSource } from '@/renderer/core/layout/types'
import { useWidgetValueStore } from '@/stores/widgetValueStore'
import type { DragAndScaleState } from './DragAndScale'
import { LGraphCanvas } from './LGraphCanvas'
@@ -1036,7 +1035,6 @@ export class LGraph
delete this._nodes_by_id[node.id]
useWidgetValueStore().unregisterNode(node.id)
this.onNodeRemoved?.(node)
// close panels