Fix T100841: Creating a frame node with shortcut doesn't sort nodes
Before 58c650a44c
, 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.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user