diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 6fe27a5ae21..87f15baaec2 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -1182,6 +1182,11 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } new_scene_from_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); + if (determine_path_automatically) { + new_scene_from_dialog->set_current_dir(editor_data->get_edited_scene_root()->get_scene_file_path().get_base_dir()); + } else { + determine_path_automatically = true; + } List extensions; Ref sd = memnew(PackedScene); @@ -4069,6 +4074,7 @@ void SceneTreeDock::set_filter(const String &p_filter) { void SceneTreeDock::save_branch_to_file(const String &p_directory) { new_scene_from_dialog->set_current_dir(p_directory); + determine_path_automatically = false; _tool_selected(TOOL_NEW_SCENE_FROM); } diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h index 8968d33b8cc..c901dd9837d 100644 --- a/editor/scene_tree_dock.h +++ b/editor/scene_tree_dock.h @@ -290,6 +290,7 @@ class SceneTreeDock : public VBoxContainer { bool profile_allow_editing = true; bool profile_allow_script_editing = true; + bool determine_path_automatically = true; static void _update_configuration_warning();