[Bf-blender-cvs] [ff17131109b] master: Fix T100841: Creating a frame node with shortcut doesn't sort nodes

Hans Goudey noreply at git.blender.org
Tue Sep 6 19:15:00 CEST 2022


Commit: ff17131109bb6ea8194527b04521be483a5a5729
Author: Hans Goudey
Date:   Tue Sep 6 11:44:26 2022 -0500
Branches: master
https://developer.blender.org/rBff17131109bb6ea8194527b04521be483a5a5729

Fix T100841: Creating a frame node with shortcut doesn't sort nodes

Before 58c650a44c25, the nodes span was rebuilt on every redraw. Now
that it's only rebuilt as necessary, we need to tag it dirty when nodes
are reordered. Relying on the order of the nodes at all isn't ideal, but
it's fairly fundamental in many areas at the moment.

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

M	source/blender/blenkernel/BKE_node_tree_update.h
M	source/blender/blenkernel/intern/node_tree_update.cc
M	source/blender/editors/space_node/node_draw.cc

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

diff --git a/source/blender/blenkernel/BKE_node_tree_update.h b/source/blender/blenkernel/BKE_node_tree_update.h
index 5e377728bb7..801ba22b3e9 100644
--- a/source/blender/blenkernel/BKE_node_tree_update.h
+++ b/source/blender/blenkernel/BKE_node_tree_update.h
@@ -33,6 +33,7 @@ void BKE_ntree_update_tag_all(struct bNodeTree *ntree);
 void BKE_ntree_update_tag_node_property(struct bNodeTree *ntree, struct bNode *node);
 void BKE_ntree_update_tag_node_new(struct bNodeTree *ntree, struct bNode *node);
 void BKE_ntree_update_tag_node_removed(struct bNodeTree *ntree);
+void BKE_ntree_update_tag_node_reordered(struct bNodeTree *ntree);
 void BKE_ntree_update_tag_node_mute(struct bNodeTree *ntree, struct bNode *node);
 void BKE_ntree_update_tag_node_internal_link(struct bNodeTree *ntree, struct bNode *node);
 
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 929d20a3b07..b2caaa912d7 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -1603,6 +1603,11 @@ void BKE_ntree_update_tag_node_removed(bNodeTree *ntree)
   add_tree_tag(ntree, NTREE_CHANGED_REMOVED_NODE);
 }
 
+void BKE_ntree_update_tag_node_reordered(bNodeTree *ntree)
+{
+  add_tree_tag(ntree, NTREE_CHANGED_ANY);
+}
+
 void BKE_ntree_update_tag_node_mute(bNodeTree *ntree, bNode *node)
 {
   add_node_tag(ntree, node, NTREE_CHANGED_NODE_PROPERTY);
diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc
index 507748e68bc..3da799d0fd5 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -34,6 +34,7 @@
 #include "BKE_lib_id.h"
 #include "BKE_main.h"
 #include "BKE_node.h"
+#include "BKE_node_tree_update.h"
 #include "BKE_object.h"
 
 #include "DEG_depsgraph.h"
@@ -248,6 +249,7 @@ void node_sort(bNodeTree &ntree)
           b++;
           BLI_remlink(&ntree.nodes, tmp);
           BLI_insertlinkbefore(&ntree.nodes, node_a, tmp);
+          BKE_ntree_update_tag_node_reordered(&ntree);
         }
       }



More information about the Bf-blender-cvs mailing list