diff options
Diffstat (limited to 'editor/editor_node.cpp')
-rw-r--r-- | editor/editor_node.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 8703076a57..40e05940a7 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1015,8 +1015,7 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) { y = (img->get_height() - size) / 2; img->crop_from_point(x, y, size, size); - // We could get better pictures with better filters - img->resize(preview_size, preview_size, Image::INTERPOLATE_CUBIC); + img->resize(preview_size, preview_size, Image::INTERPOLATE_LANCZOS); } img->convert(Image::FORMAT_RGB8); @@ -1271,6 +1270,11 @@ void EditorNode::_dialog_action(String p_file) { switch (current_option) { case FILE_NEW_INHERITED_SCENE: { + Node *scene = editor_data.get_edited_scene_root(); + // If the previous scene is rootless, just close it in favor of the new one. + if (!scene) + _menu_option_confirm(FILE_CLOSE, false); + load_scene(p_file, false, true); } break; case FILE_OPEN_SCENE: { @@ -3245,6 +3249,12 @@ InspectorDock *EditorNode::get_inspector_dock() { return inspector_dock; } +void EditorNode::_inherit_request(String p_file) { + + current_option = FILE_NEW_INHERITED_SCENE; + _dialog_action(p_file); +} + void EditorNode::_instance_request(const Vector<String> &p_files) { request_instance_scenes(p_files); @@ -5018,6 +5028,7 @@ void EditorNode::_bind_methods() { ClassDB::bind_method("_get_scene_metadata", &EditorNode::_get_scene_metadata); ClassDB::bind_method("set_edited_scene", &EditorNode::set_edited_scene); ClassDB::bind_method("open_request", &EditorNode::open_request); + ClassDB::bind_method("_inherit_request", &EditorNode::_inherit_request); ClassDB::bind_method("_instance_request", &EditorNode::_instance_request); ClassDB::bind_method("_close_messages", &EditorNode::_close_messages); ClassDB::bind_method("_show_messages", &EditorNode::_show_messages); @@ -5985,7 +5996,7 @@ EditorNode::EditorNode() { node_dock = memnew(NodeDock); filesystem_dock = memnew(FileSystemDock(this)); - filesystem_dock->connect("open", this, "open_request"); + filesystem_dock->connect("inherit", this, "_inherit_request"); filesystem_dock->connect("instance", this, "_instance_request"); filesystem_dock->connect("display_mode_changed", this, "_save_docks"); |