From 707152d82f6b4516306e4b5d9d8a5df7bc0122bb Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Tue, 21 May 2024 15:07:26 +0200 Subject: [PATCH 1/3] Deleting a grouped node should update the group --- .../node_modules/@node-red/editor-client/src/js/ui/editor.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 705743b34..c7df0f860 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -901,6 +901,11 @@ RED.editor = (function() { var startDirty = RED.nodes.dirty(); var removedNodes = []; var removedLinks = []; + + if (editing_node.g) { + RED.group.removeFromGroup(RED.nodes.group(editing_node.g), [{...editing_node}]); + } + var removedEntities = RED.nodes.remove(editing_node.id); removedNodes.push(editing_node); removedNodes = removedNodes.concat(removedEntities.nodes); From 51208fcd0c96bb4106dbd635d7b5ec59af078bae Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Tue, 21 May 2024 16:06:15 +0200 Subject: [PATCH 2/3] Fix indexOf returns -1 --- .../node_modules/@node-red/editor-client/src/js/ui/group.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/group.js b/packages/node_modules/@node-red/editor-client/src/js/ui/group.js index 13056f09b..b29428754 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/group.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/group.js @@ -606,7 +606,8 @@ RED.group = (function() { for (var i=0; i Date: Tue, 21 May 2024 19:48:21 +0200 Subject: [PATCH 3/3] Revert and fix without using `RED.group.removeFromGroup` --- .../@node-red/editor-client/src/js/ui/editor.js | 16 +++++++++++----- .../@node-red/editor-client/src/js/ui/group.js | 3 +-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index c7df0f860..ba9d54e28 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -901,11 +901,6 @@ RED.editor = (function() { var startDirty = RED.nodes.dirty(); var removedNodes = []; var removedLinks = []; - - if (editing_node.g) { - RED.group.removeFromGroup(RED.nodes.group(editing_node.g), [{...editing_node}]); - } - var removedEntities = RED.nodes.remove(editing_node.id); removedNodes.push(editing_node); removedNodes = removedNodes.concat(removedEntities.nodes); @@ -919,6 +914,17 @@ RED.editor = (function() { dirty: startDirty } + if (editing_node.g) { + const group = RED.nodes.group(editing_node.g); + // Don't use RED.group.removeFromGroup as that emits + // a change event on the node - but we're deleting it + const index = group?.nodes.indexOf(editing_node) ?? -1; + if (index > -1) { + group.nodes.splice(index, 1); + RED.group.markDirty(group); + } + } + RED.nodes.dirty(true); RED.view.redraw(true); RED.history.push(historyEvent); diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/group.js b/packages/node_modules/@node-red/editor-client/src/js/ui/group.js index b29428754..13056f09b 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/group.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/group.js @@ -606,8 +606,7 @@ RED.group = (function() { for (var i=0; i