Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-09-06 18:21:27 +0300
committerBastien Montagne <bastien@blender.org>2021-09-07 13:03:05 +0300
commitee9154fd289c698d6c550cc854bc6c92abe5b318 (patch)
tree0c568ddf91cc1e93063a988cd9178ca3aa4ff412
parentb08b0e1055fa9855ada1d23abc5ec4f106f42f38 (diff)
Nodes: fix incorrect id socket update
The issue was that the entire socket was rebuild, even though only its `SOCK_HIDE_LABEL` flag changed. This broke e.g. Object sockets from old files.
-rw-r--r--source/blender/nodes/NOD_socket_declarations.hh14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/nodes/NOD_socket_declarations.hh b/source/blender/nodes/NOD_socket_declarations.hh
index 639d2c12d73..1a5873c37b5 100644
--- a/source/blender/nodes/NOD_socket_declarations.hh
+++ b/source/blender/nodes/NOD_socket_declarations.hh
@@ -199,6 +199,20 @@ template<typename Subtype> class IDSocketDeclaration : public SocketDeclaration
{
return matches_id_socket(socket, data_, name_, identifier_);
}
+
+ bNodeSocket &update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket &socket) const override
+ {
+ if (StringRef(socket.idname) != data_.idname) {
+ return this->build(ntree, node, (eNodeSocketInOut)socket.in_out);
+ }
+ if (data_.hide_label) {
+ socket.flag |= SOCK_HIDE_LABEL;
+ }
+ else {
+ socket.flag &= ~SOCK_HIDE_LABEL;
+ }
+ return socket;
+ }
};
} // namespace detail