Fix T94173: Missing update for frame node size
Before d56bbfea7b
, nodes were updated (size calculated and
buttons added) in reverse order. Instead, now calculate the size of
frame nodes after all other nodes. Separating the drawing further
may be a good step to removing the O(n^2) loop later on.
This commit is contained in:
parent
4c3f57ffa7
commit
d15d512a68
Notes:
blender-bot
2023-02-13 16:45:43 +01:00
Referenced by issue #94173, Node editor frames don't immediately update to "Toggle Hidden Sockets"
|
@ -2418,9 +2418,11 @@ static void node_update_nodetree(const bContext &C,
|
|||
bNode &node = *nodes[i];
|
||||
uiBlock &block = *blocks[i];
|
||||
if (node.type == NODE_FRAME) {
|
||||
frame_node_prepare_for_draw(node, nodes);
|
||||
/* Frame sizes are calculated after all other nodes have calculating their #totr. */
|
||||
continue;
|
||||
}
|
||||
else if (node.type == NODE_REROUTE) {
|
||||
|
||||
if (node.type == NODE_REROUTE) {
|
||||
reroute_node_prepare_for_draw(node);
|
||||
}
|
||||
else {
|
||||
|
@ -2432,6 +2434,13 @@ static void node_update_nodetree(const bContext &C,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Now calculate the size of frame nodes, which can depend on the size of other nodes. */
|
||||
for (const int i : nodes.index_range()) {
|
||||
if (nodes[i]->type == NODE_FRAME) {
|
||||
frame_node_prepare_for_draw(*nodes[i], nodes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void frame_node_draw_label(const bNodeTree &ntree,
|
||||
|
|
Loading…
Reference in New Issue