Merge pull request #3766 from Steve-Mcl/fix-split-with

Fix "split with" on virtual links
This commit is contained in:
Nick O'Leary 2022-07-14 09:26:05 +01:00 committed by GitHub
commit 952cfaec14
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 6 deletions

View File

@ -30,11 +30,14 @@ RED.contextMenu = (function () {
} }
const selection = RED.view.selection() const selection = RED.view.selection()
const noSelection = !selection || Object.keys(selection).length === 0
const hasSelection = (selection.nodes && selection.nodes.length > 0); const hasSelection = (selection.nodes && selection.nodes.length > 0);
const hasMultipleSelection = hasSelection && selection.nodes.length > 1; const hasMultipleSelection = hasSelection && selection.nodes.length > 1;
const hasLinks = selection.links && selection.links.length > 0; const virtulLinks = (selection.links && selection.links.filter(e => !!e.link)) || [];
const isSingleLink = !hasSelection && hasLinks && selection.links.length === 1 const wireLinks = (selection.links && selection.links.filter(e => !e.link)) || [];
const isMultipleLinks = !hasSelection && hasLinks && selection.links.length > 1 const hasLinks = wireLinks.length > 0;
const isSingleLink = !hasSelection && hasLinks && wireLinks.length === 1
const isMultipleLinks = !hasSelection && hasLinks && wireLinks.length > 1
const canDelete = hasSelection || hasLinks const canDelete = hasSelection || hasLinks
const isGroup = hasSelection && selection.nodes.length === 1 && selection.nodes[0].type === 'group' const isGroup = hasSelection && selection.nodes.length === 1 && selection.nodes[0].type === 'group'
@ -66,7 +69,7 @@ RED.contextMenu = (function () {
}) })
} }
}, },
(hasSelection || hasLinks) ? { (hasLinks) ? { // has least 1 wire selected
label: RED._("contextMenu.junction"), label: RED._("contextMenu.junction"),
onselect: 'core:split-wires-with-junctions', onselect: 'core:split-wires-with-junctions',
disabled: !hasLinks disabled: !hasLinks
@ -93,6 +96,7 @@ RED.contextMenu = (function () {
RED.nodes.addJunction(nn); RED.nodes.addJunction(nn);
RED.history.push(historyEvent); RED.history.push(historyEvent);
RED.nodes.dirty(true); RED.nodes.dirty(true);
RED.view.select({nodes: [nn] });
RED.view.redraw(true) RED.view.redraw(true)
} }
}, },

View File

@ -823,7 +823,7 @@ RED.view.tools = (function() {
* @param {Object || Object[]} wires The wire(s) to split and replace with link-out, link-in nodes. * @param {Object || Object[]} wires The wire(s) to split and replace with link-out, link-in nodes.
*/ */
function splitWiresWithLinkNodes(wires) { function splitWiresWithLinkNodes(wires) {
let wiresToSplit = wires || RED.view.selection().links; let wiresToSplit = wires || (RED.view.selection().links && RED.view.selection().links.filter(e => !e.link));
if (!wiresToSplit) { if (!wiresToSplit) {
return return
} }
@ -1061,7 +1061,7 @@ RED.view.tools = (function() {
} }
function addJunctionsToWires(wires) { function addJunctionsToWires(wires) {
let wiresToSplit = wires || RED.view.selection().links; let wiresToSplit = wires || (RED.view.selection().links && RED.view.selection().links.filter(e => !e.link));
if (!wiresToSplit) { if (!wiresToSplit) {
return return
} }
@ -1187,6 +1187,7 @@ RED.view.tools = (function() {
removedLinks: Array.from(removedLinks) removedLinks: Array.from(removedLinks)
}) })
RED.nodes.dirty(true) RED.nodes.dirty(true)
RED.view.select({nodes: addedJunctions });
} }
RED.view.redraw(true); RED.view.redraw(true);
} }