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 f526e92db..804bea7a1 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 @@ -345,6 +345,10 @@ RED.group = (function() { if (nodes.length === 0) { return; } + if (nodes.filter(function(n) { return n.type === "subflow" }).length > 0) { + RED.notify("Cannot add subflow ports to a group","error"); + return; + } // nodes is an array // each node must be on the same tab (z) var group = { @@ -416,22 +420,27 @@ RED.group = (function() { // Second pass - add them to the group for (i=0;i -1) { - g.nodes.splice(ni,1) + if (n.type !== "subflow") { + if (g && n.g === g.id) { + var ni = g.nodes.indexOf(n); + if (ni > -1) { + g.nodes.splice(ni,1) + } } + n.g = group.id; + n.dirty = true; + group.nodes.push(n); + group.x = Math.min(group.x,n.x-n.w/2-25-((n._def.button && n._def.align!=="right")?20:0)); + group.y = Math.min(group.y,n.y-n.h/2-25); + group.w = Math.max(group.w,n.x+n.w/2+25+((n._def.button && n._def.align=="right")?20:0) - group.x); + group.h = Math.max(group.h,n.y+n.h/2+25-group.y); } - n.g = group.id; - n.dirty = true; - group.nodes.push(n); - group.x = Math.min(group.x,n.x-n.w/2-25-((n._def.button && n._def.align!=="right")?20:0)); - group.y = Math.min(group.y,n.y-n.h/2-25); - group.w = Math.max(group.w,n.x+n.w/2+25+((n._def.button && n._def.align=="right")?20:0) - group.x); - group.h = Math.max(group.h,n.y+n.h/2+25-group.y); } + + markDirty(group); } function removeFromGroup(group, nodes, reparent) { + console.log('rfg',group,nodes); if (!Array.isArray(nodes)) { nodes = [nodes]; } diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index 6bb8e14c6..d05335df1 100755 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -1382,7 +1382,7 @@ if (DEBUG_EVENTS) { console.warn("canvasMouseDown", mouse_mode); } },100); } } - if (!node.n.g && activeGroups) { + if (node.n.type !== 'subflow' && !node.n.g && activeGroups) { if (!groupHoverTimer) { groupHoverTimer = setTimeout(function() { activeHoverGroup = getGroupAt(node.n.x,node.n.y);