Skip to content

Commit 568be0c

Browse files
authored
When toggling selected, align state (#5482)
Previously, when toggling the mode of multiple nodes, each node would have its state individually toggled. Now it enables mode if any node is not currently set to that mode and only disables if all already match.
1 parent 6ea021d commit 568be0c

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/composables/canvas/useSelectedLiteGraphItems.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,14 @@ export function useSelectedLiteGraphItems() {
123123
for (const i in selectedNodes) {
124124
selectedNodeArray.push(selectedNodes[i])
125125
}
126+
const allNodesMatch = !selectedNodeArray.some(
127+
(selectedNode) => selectedNode.mode !== mode
128+
)
129+
const newModeForSelectedNode = allNodesMatch ? LGraphEventMode.ALWAYS : mode
126130

127131
// Process each selected node independently to determine its target state and apply to children
128132
selectedNodeArray.forEach((selectedNode) => {
129133
// Apply standard toggle logic to the selected node itself
130-
const newModeForSelectedNode =
131-
selectedNode.mode === mode ? LGraphEventMode.ALWAYS : mode
132134

133135
selectedNode.mode = newModeForSelectedNode
134136

tests-ui/tests/composables/canvas/useSelectedLiteGraphItems.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,9 @@ describe('useSelectedLiteGraphItems', () => {
237237
toggleSelectedNodesMode(LGraphEventMode.NEVER)
238238

239239
// node1 should change from ALWAYS to NEVER
240-
// node2 should change from NEVER to ALWAYS (since it was already NEVER)
240+
// node2 should stay NEVER (since a selected node exists which is not NEVER)
241241
expect(node1.mode).toBe(LGraphEventMode.NEVER)
242-
expect(node2.mode).toBe(LGraphEventMode.ALWAYS)
242+
expect(node2.mode).toBe(LGraphEventMode.NEVER)
243243
})
244244

245245
it('toggleSelectedNodesMode should set mode to ALWAYS when already in target mode', () => {

0 commit comments

Comments
 (0)