[Bf-blender-cvs] [beb746135db] master: Fix T99830: missing update after reordering node group sockets

Jacques Lucke noreply at git.blender.org
Sat Jul 23 13:32:31 CEST 2022


Commit: beb746135dbe0c5ca21c2334e7dc475f201ad71e
Author: Jacques Lucke
Date:   Sat Jul 23 13:30:15 2022 +0200
Branches: master
https://developer.blender.org/rBbeb746135dbe0c5ca21c2334e7dc475f201ad71e

Fix T99830: missing update after reordering node group sockets

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

M	source/blender/nodes/intern/node_common.cc

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

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)



More information about the Bf-blender-cvs mailing list