diff options
author | Jacques Lucke <jacques@blender.org> | 2022-07-23 14:30:15 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-07-23 14:30:15 +0300 |
commit | beb746135dbe0c5ca21c2334e7dc475f201ad71e (patch) | |
tree | 78f3e1bd58c9387c90e3d3b78fcf66f304bac8f0 /source | |
parent | 5da807e00fb75de31442f872f4997ba361be00f8 (diff) |
Fix T99830: missing update after reordering node group sockets
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/nodes/intern/node_common.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/nodes/intern/node_common.cc b/source/blender/nodes/intern/node_common.cc index b7c5f9570e4..6402ec3f3d6 100644 --- a/source/blender/nodes/intern/node_common.cc +++ b/source/blender/nodes/intern/node_common.cc @@ -37,6 +37,7 @@ using blender::MultiValueMap; using blender::Set; using blender::Stack; using blender::StringRef; +using blender::Vector; /* -------------------------------------------------------------------- */ /** \name Node Group @@ -160,6 +161,7 @@ static void group_verify_socket_list(bNodeTree &node_tree, const bool ensure_extend_socket_exists) { ListBase old_sockets = verify_lb; + Vector<bNodeSocket *> ordered_old_sockets = old_sockets; BLI_listbase_clear(&verify_lb); LISTBASE_FOREACH (const bNodeSocket *, interface_socket, &interface_sockets) { @@ -193,6 +195,19 @@ static void group_verify_socket_list(bNodeTree &node_tree, LISTBASE_FOREACH_MUTABLE (bNodeSocket *, unused_socket, &old_sockets) { nodeRemoveSocket(&node_tree, &node, unused_socket); } + + { + /* Check if new sockets match the old sockets. */ + int index; + LISTBASE_FOREACH_INDEX (bNodeSocket *, new_socket, &verify_lb, index) { + if (index < ordered_old_sockets.size()) { + if (ordered_old_sockets[index] != new_socket) { + BKE_ntree_update_tag_interface(&node_tree); + break; + } + } + } + } } void node_group_update(struct bNodeTree *ntree, struct bNode *node) |