Fix Rename option for instance roots

(cherry picked from commit f0069875981698f0a7efe561eedff7c76646ecb3)
This commit is contained in:
kobewi
2026-01-29 14:00:56 +01:00
committed by Thaddeus Crews
parent 21e93094c5
commit a05938e7b1

View File

@@ -3951,25 +3951,37 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
} }
if (profile_allow_editing) { if (profile_allow_editing) {
bool is_foreign = false; bool can_rename = true;
bool can_replace = true;
for (Node *E : selection) { for (Node *E : selection) {
if (E != edited_scene && (E->get_owner() != edited_scene || E->is_instance())) { if (E != edited_scene && (E->get_owner() != edited_scene || E->is_instance())) {
is_foreign = true; can_replace = false;
break; if (!E->is_instance()) {
can_rename = false;
}
} }
if (edited_scene->get_scene_inherited_state().is_valid()) { if (edited_scene->get_scene_inherited_state().is_valid()) {
if (E == edited_scene || edited_scene->get_scene_inherited_state()->find_node_by_path(edited_scene->get_path_to(E)) >= 0) { if (E == edited_scene || edited_scene->get_scene_inherited_state()->find_node_by_path(edited_scene->get_path_to(E)) >= 0) {
is_foreign = true; can_replace = false;
break; can_rename = false;
} }
} }
if (!can_rename && !can_replace) {
break;
}
} }
if (!is_foreign) { if (can_rename || can_replace) {
BEGIN_SECTION() BEGIN_SECTION()
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Rename")), ED_GET_SHORTCUT("scene_tree/rename"), TOOL_RENAME); if (can_rename) {
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Reload")), ED_GET_SHORTCUT("scene_tree/change_node_type"), TOOL_REPLACE); menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Rename")), ED_GET_SHORTCUT("scene_tree/rename"), TOOL_RENAME);
}
if (can_replace) {
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Reload")), ED_GET_SHORTCUT("scene_tree/change_node_type"), TOOL_REPLACE);
}
END_SECTION() END_SECTION()
} }