### Godot version

4.0.dev(0810ecaafdbee3ea747219e6ab3a8de5d2216a09)

### System information

any

### Issue description

https://user-images.githubusercontent.com/61938263/215898051-8506b45e-a9d4-4c3f-b1b3-28f202dea67b.mp4



### Steps to reproduce

Editt AnimationBlendTree

### Minimal reproduction project

N/A
float current_node_start_pos = start_from;
				if (current_node_size < largest_node_size / 2) {
					if (!(i || j)) {
						start_from -= (largest_node_size - current_node_size);
					}
					current_node_start_pos = start_from + largest_node_size - current_node_size;
				}
				cal_pos.x = current_node_start_pos;
			}
			new_positions.insert(layer[j], cal_pos);
		}
		start_from += largest_node_size + gap_h;
		largest_node_size = 0.0f;
	}
	emit_signal(SNAME("begin_node_move"));
	for (const StringName &E : selected_nodes) {
		GraphNode *gn = Object::cast_to<GraphNode>(node_names[E]);
		gn->set_drag(true);
		Vector2 pos = (new_positions[E]);
		if (is_using_snap()) {
			const int snap = get_snap();
			pos = pos.snapped(Vector2(snap, snap));
		}
		gn->set_position_offset(pos);
		gn->set_drag(false);
	}
	emit_signal(SNAME("end_node_move"));
	arranging_graph = false;
}
void GraphEdit::_bind_methods() {