[Bf-blender-cvs] [a5610da1d5e] master: Fix T93413: Nodes 'Make Links' fails for multi input socket

Philipp Oeser noreply at git.blender.org
Tue Jan 18 20:24:56 CET 2022


Commit: a5610da1d5ece3a3800d65cff1da926ca6ccf6c2
Author: Philipp Oeser
Date:   Tue Jan 18 16:20:43 2022 +0100
Branches: master
https://developer.blender.org/rBa5610da1d5ece3a3800d65cff1da926ca6ccf6c2

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

===================================================================

M	source/blender/editors/space_node/node_relationships.cc

===================================================================

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;



More information about the Bf-blender-cvs mailing list