Better computedDisabled handling

computedDisabled is inherited, but propogates
This commit is contained in:
Austin Mroz
2025-09-05 11:21:51 -05:00
parent b424c62a99
commit eab71667b6

View File

@@ -578,11 +578,11 @@ export class SubgraphNode extends LGraphNode implements BaseLGraph {
} }
onPropertyChanged(k, property) { onPropertyChanged(k, property) {
if (k !== "proxyWidgets") return if (k !== "proxyWidgets") return
this.widgets = this.widgets.filter((w) => !w.isProxyWidget) this.widgets = this.widgets.filter((w) => !w.isProxyWidget)
setTimeout(() => { setTimeout(() => {
for (const [nodeId, widgetName] of property) for (const [nodeId, widgetName] of property)
this.addProxyFromOverlay({ this.addProxyFromOverlay({
__proto__:{nodeId, widgetName}}) __proto__:{nodeId, widgetName}})
}, 0) }, 0)
} }
@@ -604,32 +604,37 @@ export class SubgraphNode extends LGraphNode implements BaseLGraph {
let g = graph let g = graph
let n = undefined let n = undefined
for (let id of nodeId.split(':')) { for (let id of nodeId.split(':')) {
n = g?._nodes_by_id?.[id] n = g?._nodes_by_id?.[id]
graph = n?.subgraph graph = n?.subgraph
} }
if (!n) return if (!n) return
return n.widgets.find((w) => w.name === widgetName) return n.widgets.find((w) => w.name === widgetName)
} }
const handler = Object.fromEntries(['get', 'set', 'getPrototypeOf', 'ownKeys', 'has'].map((s) => { const handler = Object.fromEntries(['get', 'set', 'getPrototypeOf', 'ownKeys', 'has'].map((s) => {
const func = function(t,p,...rest) { const func = function(t,p,...rest) {
if (s == 'get' && p == '_overlay') if (s == 'get' && p == '_overlay')
return overlay return overlay
const lw = linkedWidget(overlay.graph, overlay.nodeId, overlay.widgetName) const lw = linkedWidget(overlay.graph, overlay.nodeId, overlay.widgetName)
if (s == 'get' && p == 'node') { if (s == 'get' && p == 'node') {
return subgraphNode return subgraphNode
} }
//NOTE: p may be undefined if (s == 'set' && p == 'computedDisabled') {
let r = rest.at(-1) //ignore setting, calc actual
if (['y', 'last_y', 'width', 'computedHeight', 'computedDisabled', 'afterQueued', 'beforeQueued', 'onRemove', 'isProxyWidget'].includes(p)) lw.computedDisabled = lw.disabled || lw.node.getSlotFromWidget(lw)?.link != null
t = overlay return true
else { }
t = lw //NOTE: p may be undefined
if (!t) let r = rest.at(-1)
t = {__proto__: overlay, draw: drawDisconnected} if (['y', 'last_y', 'width', 'computedHeight', 'afterQueued', 'beforeQueued', 'onRemove', 'isProxyWidget'].includes(p))
if (p == "value") t = overlay
r = t else {
} t = lw
return Reflect[s](t,p,...rest.slice(0,-1),r) if (!t)
t = {__proto__: overlay, draw: drawDisconnected}
if (p == "value")
r = t
}
return Reflect[s](t,p,...rest.slice(0,-1),r)
} }
return [s, func] return [s, func]
})) }))