From 75e9490f5c74e32cf2ace5d2d795d0ea18954c11 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Fri, 23 Jun 2023 11:30:20 -0400 Subject: [PATCH] Fix #109231: Python defined socket type switching broken The dynamic declarations introduced by 70260960994d6cce3a33 didn't work properly for custom node socket types yet since changes weren't detected and new sockets in group nodes or group inputs/outputs weren't created correctly. The fix is simple, we just copy the pattern from the other socket types. --- .../blender/nodes/intern/node_socket_declarations.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/blender/nodes/intern/node_socket_declarations.cc b/source/blender/nodes/intern/node_socket_declarations.cc index 496bd888be4..8125d87d6b8 100644 --- a/source/blender/nodes/intern/node_socket_declarations.cc +++ b/source/blender/nodes/intern/node_socket_declarations.cc @@ -649,6 +649,9 @@ bool Custom::matches(const bNodeSocket &socket) const if (socket.type != SOCK_CUSTOM) { return false; } + if (!STREQ(socket.typeinfo->idname, idname_)) { + return false; + } return true; } @@ -657,10 +660,12 @@ bool Custom::can_connect(const bNodeSocket &socket) const return sockets_can_connect(*this, socket) && STREQ(socket.idname, idname_); } -bNodeSocket &Custom::update_or_build(bNodeTree & /*ntree*/, - bNode & /*node*/, - bNodeSocket &socket) const +bNodeSocket &Custom::update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket &socket) const { + if (!STREQ(socket.typeinfo->idname, idname_)) { + return this->build(ntree, node); + } + this->set_common_flags(socket); return socket; } -- 2.30.2