Fix T96386: crash when changing shader to node group in properties

The previous code updated the wrong node tree. The result was that
the new group node did not have the socket that was supposed to
be linked.
This commit is contained in:
Jacques Lucke 2022-03-16 11:23:45 +01:00 committed by Philipp Oeser
parent 27bef3ee02
commit 731f377783
Notes: blender-bot 2023-10-13 01:54:23 +02:00
Referenced by issue #96386, Crash when changing shader to nodegroup in properties
Referenced by issue #96241, 3.1: Potential candidates for corrective releases
1 changed files with 4 additions and 3 deletions

View File

@ -82,11 +82,11 @@ static bool node_link_item_compare(bNode *node, NodeLinkItem *item)
return true;
}
static void node_link_item_apply(Main *bmain, bNode *node, NodeLinkItem *item)
static void node_link_item_apply(bNodeTree *ntree, bNode *node, NodeLinkItem *item)
{
if (ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP)) {
node->id = (ID *)item->ngroup;
BKE_ntree_update_main_tree(bmain, item->ngroup, nullptr);
BKE_ntree_update_tag_node_property(ntree, node);
}
else {
/* nothing to do for now */
@ -250,7 +250,8 @@ static void node_socket_add_replace(const bContext *C,
nodePositionRelative(node_from, node_to, sock_from_tmp, sock_to);
}
node_link_item_apply(bmain, node_from, item);
node_link_item_apply(ntree, node_from, item);
ED_node_tree_propagate_change(C, bmain, ntree);
}
nodeSetActive(ntree, node_from);