Fix T87171: Update multi input socket indices

When inserting a node on top of a link, the multi input socket
indices weren't updated. This fixes that and keeps the relative
order of the links the same.

Author: Wannes Malfait

Reviewed By: Fabian Schempp

Differential Revision: https://developer.blender.org/D10969
This commit is contained in:
Fabian Schempp 2021-04-15 11:38:46 +02:00
parent 05dbbd83f0
commit 4cf3010714
Notes: blender-bot 2023-02-14 08:35:51 +01:00
Referenced by issue #87419, Incorrect link order after inserting node before multi-input-socket.
Referenced by issue #87171, Splicing a Join Geometry node will adopt the multi-input connection position from the following socket
3 changed files with 8 additions and 5 deletions

@ -1 +1 @@
Subproject commit 5523cbaed60719960f5f7b2486925145ecbe81e5
Subproject commit 2ffe34eb02a81fb7023bd7dbfb8651865cb33921

View File

@ -2260,7 +2260,12 @@ void ED_node_link_insert(Main *bmain, ScrArea *area)
node_remove_extra_links(snode, link);
link->flag &= ~NODE_LINKFLAG_HILITE;
nodeAddLink(snode->edittree, select, best_output, node, sockto);
bNodeLink *new_link = nodeAddLink(snode->edittree, select, best_output, node, sockto);
/* Copy the socket index for the new link, and reset it for the old link. This way the
* relative order of links is preserved, and the links get drawn in the right place. */
new_link->multi_input_socket_index = link->multi_input_socket_index;
link->multi_input_socket_index = 0;
/* set up insert offset data, it needs stuff from here */
if ((snode->flag & SNODE_SKIP_INSOFFSET) == 0) {
@ -2277,8 +2282,6 @@ void ED_node_link_insert(Main *bmain, ScrArea *area)
snode_update(snode, select);
ED_node_tag_update_id((ID *)snode->edittree);
ED_node_tag_update_id(snode->id);
sort_multi_input_socket_links(snode, node, NULL, NULL);
}
}
}

@ -1 +1 @@
Subproject commit f1db70de64574921180b2c99519027d44d5350fc
Subproject commit f99d29ae3e6ad44d45d79309454c45f8088781a4