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
This commit is contained in:
Philipp Oeser 2022-01-18 16:20:43 +01:00
parent 9506dcf675
commit a5610da1d5
Notes: blender-bot 2023-02-14 11:34:30 +01:00
Referenced by issue #93413, make links in geometry node editor doesn't work with multi input socket
1 changed files with 4 additions and 1 deletions

View File

@ -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;