1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Merge pull request #3437 from Steve-Mcl/fix-multiple-wires

bug fix: Dont add wires to undo buffer twice
This commit is contained in:
Nick O'Leary 2022-02-14 20:12:46 +00:00 committed by GitHub
commit 264047dc0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2338,14 +2338,21 @@ RED.view = (function() {
var removedSubflowStatus; var removedSubflowStatus;
var subflowInstances = []; var subflowInstances = [];
var historyEvents = []; var historyEvents = [];
var addToRemovedLinks = function(links) {
if(!links) { return; }
var _links = Array.isArray(links) ? links : [links];
_links.forEach(function(l) {
removedLinks.push(l);
selectedLinks.remove(l);
})
}
if (reconnectWires) { if (reconnectWires) {
var reconnectResult = RED.nodes.detachNodes(movingSet.nodes()) var reconnectResult = RED.nodes.detachNodes(movingSet.nodes())
var addedLinks = reconnectResult.newLinks; var addedLinks = reconnectResult.newLinks;
if (addedLinks.length > 0) { if (addedLinks.length > 0) {
historyEvents.push({ t:'add', links: addedLinks }) historyEvents.push({ t:'add', links: addedLinks })
} }
removedLinks = removedLinks.concat(reconnectResult.removedLinks) addToRemovedLinks(reconnectResult.removedLinks)
} }
var startDirty = RED.nodes.dirty(); var startDirty = RED.nodes.dirty();
@ -2377,7 +2384,7 @@ RED.view = (function() {
var removedEntities = RED.nodes.remove(node.id); var removedEntities = RED.nodes.remove(node.id);
removedNodes.push(node); removedNodes.push(node);
removedNodes = removedNodes.concat(removedEntities.nodes); removedNodes = removedNodes.concat(removedEntities.nodes);
removedLinks = removedLinks.concat(removedEntities.links); addToRemovedLinks(removedNodes.removedLinks);
if (node.g) { if (node.g) {
var group = RED.nodes.group(node.g); var group = RED.nodes.group(node.g);
if (selectedGroups.indexOf(group) === -1) { if (selectedGroups.indexOf(group) === -1) {
@ -2410,20 +2417,20 @@ RED.view = (function() {
if (removedSubflowOutputs.length > 0) { if (removedSubflowOutputs.length > 0) {
result = RED.subflow.removeOutput(removedSubflowOutputs); result = RED.subflow.removeOutput(removedSubflowOutputs);
if (result) { if (result) {
removedLinks = removedLinks.concat(result.links); addToRemovedLinks(result.links);
} }
} }
// Assume 0/1 inputs // Assume 0/1 inputs
if (removedSubflowInputs.length == 1) { if (removedSubflowInputs.length == 1) {
result = RED.subflow.removeInput(); result = RED.subflow.removeInput();
if (result) { if (result) {
removedLinks = removedLinks.concat(result.links); addToRemovedLinks(result.links);
} }
} }
if (removedSubflowStatus) { if (removedSubflowStatus) {
result = RED.subflow.removeStatus(); result = RED.subflow.removeStatus();
if (result) { if (result) {
removedLinks = removedLinks.concat(result.links); addToRemovedLinks(result.links);
} }
} }