diff options
author | Fabian Schempp <fabianschempp@googlemail.com> | 2021-04-15 12:38:46 +0300 |
---|---|---|
committer | Fabian Schempp <fabianschempp@googlemail.com> | 2021-04-15 12:38:46 +0300 |
commit | 4cf3010714e92af52a1943feac0c89a9a41f297f (patch) | |
tree | 276d87f412e289dfa2fd85c6b2ae1309fe20ac26 /source/blender/editors/space_node/node_relationships.c | |
parent | 05dbbd83f00d270c00cb1a0904c504c31e1812af (diff) |
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
Diffstat (limited to 'source/blender/editors/space_node/node_relationships.c')
-rw-r--r-- | source/blender/editors/space_node/node_relationships.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/editors/space_node/node_relationships.c b/source/blender/editors/space_node/node_relationships.c index 4fa0c8c3c5a..8b0d7ef77b3 100644 --- a/source/blender/editors/space_node/node_relationships.c +++ b/source/blender/editors/space_node/node_relationships.c @@ -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); } } } |