Fix T95664: missing update after changing active output node

This commit is contained in:
Jacques Lucke 2022-02-10 12:07:48 +01:00
parent 5312cf50a1
commit 87d2de88fd
Notes: blender-bot 2023-02-13 16:16:21 +01:00
Referenced by issue #95664, Regression: "Material Output" change is not visible in the 3D viewport
3 changed files with 11 additions and 0 deletions

View File

@ -60,6 +60,8 @@ void BKE_ntree_update_tag_link_removed(struct bNodeTree *ntree);
void BKE_ntree_update_tag_link_added(struct bNodeTree *ntree, struct bNodeLink *link);
void BKE_ntree_update_tag_link_mute(struct bNodeTree *ntree, struct bNodeLink *link);
/** Used when the a new output node becomes active and therefore changes the output. */
void BKE_ntree_update_tag_active_output_changed(struct bNodeTree *ntree);
/** Used after file loading when run-time data on the tree has not been initialized yet. */
void BKE_ntree_update_tag_missing_runtime_data(struct bNodeTree *ntree);
/** Used when the interface sockets/values have changed. */

View File

@ -1614,6 +1614,11 @@ void BKE_ntree_update_tag_link_mute(bNodeTree *ntree, bNodeLink *UNUSED(link))
add_tree_tag(ntree, NTREE_CHANGED_LINK);
}
void BKE_ntree_update_tag_active_output_changed(bNodeTree *ntree)
{
add_tree_tag(ntree, NTREE_CHANGED_ANY);
}
void BKE_ntree_update_tag_missing_runtime_data(bNodeTree *ntree)
{
add_tree_tag(ntree, NTREE_CHANGED_ALL);

View File

@ -667,6 +667,7 @@ void ED_node_set_active(
node->flag |= NODE_DO_OUTPUT;
if (!was_output) {
do_update = true;
BKE_ntree_update_tag_active_output_changed(ntree);
}
}
@ -684,6 +685,7 @@ void ED_node_set_active(
}
node->flag |= NODE_DO_OUTPUT;
BKE_ntree_update_tag_active_output_changed(ntree);
}
ED_node_tree_propagate_change(nullptr, bmain, ntree);
@ -750,6 +752,7 @@ void ED_node_set_active(
node->flag |= NODE_DO_OUTPUT;
if (was_output == 0) {
BKE_ntree_update_tag_active_output_changed(ntree);
ED_node_tree_propagate_change(nullptr, bmain, ntree);
}
@ -765,6 +768,7 @@ void ED_node_set_active(
}
node->flag |= NODE_DO_OUTPUT;
BKE_ntree_update_tag_active_output_changed(ntree);
ED_node_tree_propagate_change(nullptr, bmain, ntree);
}
}