|
@@ -2129,11 +2129,19 @@ static bool overrides_external_editor(Object *p_object) {
|
|
return script->get_language()->overrides_external_editor();
|
|
return script->get_language()->overrides_external_editor();
|
|
}
|
|
}
|
|
|
|
|
|
-void EditorNode::_edit_current() {
|
|
|
|
|
|
+void EditorNode::_edit_current(bool p_skip_foreign) {
|
|
ObjectID current = editor_history.get_current();
|
|
ObjectID current = editor_history.get_current();
|
|
Object *current_obj = current.is_valid() ? ObjectDB::get_instance(current) : nullptr;
|
|
Object *current_obj = current.is_valid() ? ObjectDB::get_instance(current) : nullptr;
|
|
- bool inspector_only = editor_history.is_current_inspector_only();
|
|
|
|
|
|
|
|
|
|
+ RES res = Object::cast_to<Resource>(current_obj);
|
|
|
|
+ if (p_skip_foreign && res.is_valid()) {
|
|
|
|
+ if (res->get_path().find("::") > -1 && res->get_path().get_slice("::", 0) != editor_data.get_scene_path(get_current_tab())) {
|
|
|
|
+ // Trying to edit resource that belongs to another scene; abort.
|
|
|
|
+ current_obj = nullptr;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bool inspector_only = editor_history.is_current_inspector_only();
|
|
this->current = current_obj;
|
|
this->current = current_obj;
|
|
|
|
|
|
if (!current_obj) {
|
|
if (!current_obj) {
|
|
@@ -3494,7 +3502,7 @@ void EditorNode::set_current_scene(int p_idx) {
|
|
}
|
|
}
|
|
|
|
|
|
Dictionary state = editor_data.restore_edited_scene_state(editor_selection, &editor_history);
|
|
Dictionary state = editor_data.restore_edited_scene_state(editor_selection, &editor_history);
|
|
- _edit_current();
|
|
|
|
|
|
+ _edit_current(true);
|
|
|
|
|
|
_update_title();
|
|
_update_title();
|
|
|
|
|