From ee9154fd289c698d6c550cc854bc6c92abe5b318 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Mon, 6 Sep 2021 17:21:27 +0200 Subject: 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. --- source/blender/nodes/NOD_socket_declarations.hh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 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 -- cgit v1.2.3