File tree Expand file tree Collapse file tree 6 files changed +22
-4
lines changed Expand file tree Collapse file tree 6 files changed +22
-4
lines changed Original file line number Diff line number Diff line change @@ -143,8 +143,8 @@ onMounted(() => {
143143 widget .options .selectOn ?? [' focus' , ' click' ],
144144 () => {
145145 const lgCanvas = canvasStore .canvas
146- lgCanvas ?.selectNode (widget .node )
147- lgCanvas ?.bringToFront (widget .node )
146+ lgCanvas ?.selectNode (widgetState . widget .node )
147+ lgCanvas ?.bringToFront (widgetState . widget .node )
148148 }
149149 )
150150})
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ import {
1717 matchesPropertyItem ,
1818 matchesWidgetItem ,
1919 promoteWidget ,
20+ pruneDisconnected ,
2021 widgetItemToProperty
2122} from ' @/core/graph/subgraph/proxyWidgetUtils'
2223import type { WidgetItem } from ' @/core/graph/subgraph/proxyWidgetUtils'
@@ -235,6 +236,7 @@ watchDebounced(
235236)
236237onMounted (() => {
237238 setDraggableState ()
239+ if (activeNode .value ) pruneDisconnected (activeNode .value )
238240})
239241onBeforeUnmount (() => {
240242 draggableList .value ?.dispose ()
Original file line number Diff line number Diff line change @@ -48,9 +48,12 @@ type Overlay = Partial<IBaseWidget> & {
4848 * on the linked widget
4949 */
5050type ProxyWidget = IBaseWidget & { _overlay : Overlay }
51- function isProxyWidget ( w : IBaseWidget ) : w is ProxyWidget {
51+ export function isProxyWidget ( w : IBaseWidget ) : w is ProxyWidget {
5252 return ( w as { _overlay ?: Overlay } ) ?. _overlay ?. isProxyWidget ?? false
5353}
54+ export function isDisconnectedWidget ( w : ProxyWidget ) {
55+ return w instanceof disconnectedWidget . constructor
56+ }
5457
5558export function registerProxyWidgets ( canvas : LGraphCanvas ) {
5659 //NOTE: canvasStore hasn't been initialized yet
@@ -167,7 +170,7 @@ function resolveLinkedWidget(
167170 if ( ! n ) return [ undefined , undefined ]
168171 const widget = n . widgets ?. find ( ( w : IBaseWidget ) => w . name === widgetName )
169172 //Slightly hacky. Force recursive resolution of nested widgets
170- if ( widget instanceof disconnectedWidget . constructor && isProxyWidget ( widget ) )
173+ if ( widget && isProxyWidget ( widget ) && isDisconnectedWidget ( widget ) )
171174 widget . computedHeight = 20
172175 return [ n , widget ]
173176}
Original file line number Diff line number Diff line change 11import { parseProxyWidgets } from '@/core/schemas/proxyWidget'
22import type { ProxyWidgetsProperty } from '@/core/schemas/proxyWidget'
3+ import {
4+ isProxyWidget ,
5+ isDisconnectedWidget
6+ } from '@/core/graph/subgraph/proxyWidget'
37import { t } from '@/i18n'
48import type {
59 IContextMenuValue ,
@@ -163,3 +167,10 @@ export function promoteRecommendedWidgets(subgraphNode: SubgraphNode) {
163167 subgraphNode . properties . proxyWidgets = proxyWidgets
164168 subgraphNode . computeSize ( subgraphNode . size )
165169}
170+
171+ export function pruneDisconnected ( subgraphNode : SubgraphNode ) {
172+ subgraphNode . properties . proxyWidgets = subgraphNode . widgets
173+ . filter ( isProxyWidget )
174+ . filter ( ( w ) => ! isDisconnectedWidget ( w ) )
175+ . map ( ( w ) => [ w . _overlay . nodeId , w . _overlay . widgetName ] )
176+ }
Original file line number Diff line number Diff line change @@ -546,6 +546,7 @@ export class SubgraphNode extends LGraphNode implements BaseLGraph {
546546
547547 // Clean up all promoted widgets
548548 for ( const widget of this . widgets ) {
549+ if ( 'isProxyWidget' in widget && widget . isProxyWidget ) continue
549550 this . subgraph . events . dispatch ( 'widget-demoted' , {
550551 widget,
551552 subgraphNode : this
Original file line number Diff line number Diff line change @@ -140,6 +140,7 @@ export abstract class BaseWidget<TWidget extends IBaseWidget = IBaseWidget>
140140 displayValue,
141141 // @ts -expect-error Prevent naming conflicts with custom nodes.
142142 labelBaseline,
143+ promoted,
143144 ...safeValues
144145 } = widget
145146
You can’t perform that action at this time.
0 commit comments