|
@@ -2079,17 +2079,19 @@ bool SceneTreeDock::_validate_no_foreign() {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
- // When edited_scene inherits from another one the root Node will be the parent Scene,
|
|
|
|
- // we don't want to consider that Node a foreign one otherwise we would not be able to
|
|
|
|
- // delete it.
|
|
|
|
- if (edited_scene->get_scene_inherited_state().is_valid() && edited_scene == E) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
|
|
+ if (edited_scene->get_scene_inherited_state().is_valid()) {
|
|
|
|
+ // When edited_scene inherits from another one the root Node will be the parent Scene,
|
|
|
|
+ // we don't want to consider that Node a foreign one otherwise we would not be able to
|
|
|
|
+ // delete it.
|
|
|
|
+ if (edited_scene == E && current_option != TOOL_REPLACE) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
|
|
- if (edited_scene->get_scene_inherited_state().is_valid() && edited_scene->get_scene_inherited_state()->find_node_by_path(edited_scene->get_path_to(E)) >= 0) {
|
|
|
|
- accept->set_text(TTR("Can't operate on nodes the current scene inherits from!"));
|
|
|
|
- accept->popup_centered();
|
|
|
|
- return false;
|
|
|
|
|
|
+ if (edited_scene == E || edited_scene->get_scene_inherited_state()->find_node_by_path(edited_scene->get_path_to(E)) >= 0) {
|
|
|
|
+ accept->set_text(TTR("Can't operate on nodes the current scene inherits from!"));
|
|
|
|
+ accept->popup_centered();
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3443,6 +3445,13 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
|
|
can_replace = false;
|
|
can_replace = false;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ 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) {
|
|
|
|
+ can_replace = false;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
if (can_replace) {
|
|
if (can_replace) {
|