From a5610da1d5ece3a3800d65cff1da926ca6ccf6c2 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Tue, 18 Jan 2022 16:20:43 +0100 Subject: Fix T93413: Nodes 'Make Links' fails for multi input socket This was the case for multi input sockets that have a link already. Since we have multi input sockets, the way we use `socket_is_available` is not really giving the expected result on these. When used for input sockets the intention is to find a free socket (either for noodle **replacement**, then it is always available, or just the next free available socket). Now I would think without the intention to replace an existing link, a multi input socket should still be available. From the inside of the function, the `replace` argument turns [namewise] to `allow_used`, which sounds a little different (so one might argue that if `allow_used` is `False` this should also trigger for already connected multi input sockets). In the end, this is an issue with the variable naming though, cant think of a usecase where the patch change would really go against intentions. Maniphest Tasks: T93413 Differential Revision: https://developer.blender.org/D13866 --- source/blender/editors/space_node/node_relationships.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/space_node/node_relationships.cc b/source/blender/editors/space_node/node_relationships.cc index 441c63b9fc3..a5117fbd25b 100644 --- a/source/blender/editors/space_node/node_relationships.cc +++ b/source/blender/editors/space_node/node_relationships.cc @@ -212,7 +212,10 @@ static bool socket_is_available(bNodeTree *UNUSED(ntree), bNodeSocket *sock, con } if (!allow_used && (sock->flag & SOCK_IN_USE)) { - return false; + /* Multi input sockets are available (even if used). */ + if (!(sock->flag & SOCK_MULTI_INPUT)) { + return false; + } } return true; -- cgit v1.2.3