mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Merge pull request #4851 from node-red/4839-fix-moving-link-wires
Fix moving link wires
This commit is contained in:
commit
e67afb2611
@ -3189,27 +3189,59 @@ RED.view = (function() {
|
|||||||
|
|
||||||
for (i=0;i<drag_lines.length;i++) {
|
for (i=0;i<drag_lines.length;i++) {
|
||||||
if (portType != drag_lines[i].portType && mouseup_node !== drag_lines[i].node) {
|
if (portType != drag_lines[i].portType && mouseup_node !== drag_lines[i].node) {
|
||||||
var drag_line = drag_lines[i];
|
let drag_line = drag_lines[i];
|
||||||
var src,dst,src_port;
|
let src,dst,src_port;
|
||||||
|
let oldDst;
|
||||||
|
let oldSrc;
|
||||||
if (drag_line.portType === PORT_TYPE_OUTPUT) {
|
if (drag_line.portType === PORT_TYPE_OUTPUT) {
|
||||||
src = drag_line.node;
|
src = drag_line.node;
|
||||||
src_port = drag_line.port;
|
src_port = drag_line.port;
|
||||||
dst = mouseup_node;
|
dst = mouseup_node;
|
||||||
|
oldSrc = src;
|
||||||
|
if (drag_line.link) {
|
||||||
|
oldDst = drag_line.link.target;
|
||||||
|
}
|
||||||
} else if (drag_line.portType === PORT_TYPE_INPUT) {
|
} else if (drag_line.portType === PORT_TYPE_INPUT) {
|
||||||
src = mouseup_node;
|
src = mouseup_node;
|
||||||
dst = drag_line.node;
|
dst = drag_line.node;
|
||||||
src_port = portIndex || 0;
|
src_port = portIndex || 0;
|
||||||
|
oldSrc = dst;
|
||||||
|
if (drag_line.link) {
|
||||||
|
oldDst = drag_line.link.source
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var link = {source: src, sourcePort:src_port, target: dst};
|
var link = {source: src, sourcePort:src_port, target: dst};
|
||||||
if (drag_line.virtualLink) {
|
if (drag_line.virtualLink) {
|
||||||
if (/^link (in|out)$/.test(src.type) && /^link (in|out)$/.test(dst.type) && src.type !== dst.type) {
|
if (/^link (in|out)$/.test(src.type) && /^link (in|out)$/.test(dst.type) && src.type !== dst.type) {
|
||||||
if (src.links.indexOf(dst.id) === -1 && dst.links.indexOf(src.id) === -1) {
|
if (src.links.indexOf(dst.id) === -1 && dst.links.indexOf(src.id) === -1) {
|
||||||
var oldSrcLinks = $.extend(true,{},{v:src.links}).v
|
var oldSrcLinks = [...src.links]
|
||||||
var oldDstLinks = $.extend(true,{},{v:dst.links}).v
|
var oldDstLinks = [...dst.links]
|
||||||
|
|
||||||
src.links.push(dst.id);
|
src.links.push(dst.id);
|
||||||
dst.links.push(src.id);
|
dst.links.push(src.id);
|
||||||
|
|
||||||
|
if (oldDst) {
|
||||||
|
src.links = src.links.filter(id => id !== oldDst.id)
|
||||||
|
dst.links = dst.links.filter(id => id !== oldDst.id)
|
||||||
|
var oldOldDstLinks = [...oldDst.links]
|
||||||
|
oldDst.links = oldDst.links.filter(id => id !== oldSrc.id)
|
||||||
|
oldDst.dirty = true;
|
||||||
|
modifiedNodes.push(oldDst);
|
||||||
|
linkEditEvents.push({
|
||||||
|
t:'edit',
|
||||||
|
node: oldDst,
|
||||||
|
dirty: RED.nodes.dirty(),
|
||||||
|
changed: oldDst.changed,
|
||||||
|
changes: {
|
||||||
|
links:oldOldDstLinks
|
||||||
|
}
|
||||||
|
});
|
||||||
|
oldDst.changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
src.dirty = true;
|
src.dirty = true;
|
||||||
dst.dirty = true;
|
dst.dirty = true;
|
||||||
|
|
||||||
modifiedNodes.push(src);
|
modifiedNodes.push(src);
|
||||||
modifiedNodes.push(dst);
|
modifiedNodes.push(dst);
|
||||||
|
|
||||||
@ -3237,6 +3269,7 @@ RED.view = (function() {
|
|||||||
links:oldDstLinks
|
links:oldDstLinks
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
src.changed = true;
|
src.changed = true;
|
||||||
dst.changed = true;
|
dst.changed = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user