diff --git a/source/blender/editors/space_node/node_add.cc b/source/blender/editors/space_node/node_add.cc index 0eb23fcf3a8..bd06ecedd96 100644 --- a/source/blender/editors/space_node/node_add.cc +++ b/source/blender/editors/space_node/node_add.cc @@ -179,7 +179,10 @@ static wmOperatorStatus add_reroute_exec(bContext *C, wmOperator *op) * Further deduplication using the second map means we only have one cut per link. */ Map cuts_per_socket; + int intersection_count = 0; + LISTBASE_FOREACH (bNodeLink *, link, &ntree.links) { + if (node_link_is_hidden_or_dimmed(region.v2d, *link)) { continue; } @@ -190,6 +193,7 @@ static wmOperatorStatus add_reroute_exec(bContext *C, wmOperator *op) RerouteCutsForSocket &from_cuts = cuts_per_socket.lookup_or_add_default(link->fromsock); from_cuts.from_node = link->fromnode; from_cuts.links.add(link, *cut); + intersection_count++; } for (const auto item : cuts_per_socket.items()) { @@ -197,6 +201,10 @@ static wmOperatorStatus add_reroute_exec(bContext *C, wmOperator *op) bNode *reroute = bke::node_add_static_node(C, ntree, NODE_REROUTE); + if (intersection_count == 1) { + bke::node_set_active(ntree, *reroute); + } + bke::node_add_link(ntree, *item.value.from_node, *item.key,