diff options
Diffstat (limited to 'editor/editor_node.cpp')
-rw-r--r-- | editor/editor_node.cpp | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index edb6fee75c..616c5667dd 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2066,8 +2066,9 @@ void EditorNode::_dialog_action(String p_file) { } break; case FILE_EXPORT_MESH_LIBRARY: { - bool merge_with_existing_library = file_export_lib_merge->is_pressed(); - bool apply_mesh_instance_transforms = file_export_lib_apply_xforms->is_pressed(); + const Dictionary &fd_options = file_export_lib->get_selected_options(); + bool merge_with_existing_library = fd_options.get(TTR("Merge With Existing"), true); + bool apply_mesh_instance_transforms = fd_options.get(TTR("Apply MeshInstance Transforms"), false); Ref<MeshLibrary> ml; if (merge_with_existing_library && FileAccess::exists(p_file)) { @@ -2506,8 +2507,8 @@ void EditorNode::_edit_current(bool p_skip_foreign, bool p_skip_inspector_update editable_info, info_is_warning); - Object *editor_owner = is_node ? (Object *)SceneTreeDock::get_singleton() : is_resource ? (Object *)InspectorDock::get_inspector_singleton() - : (Object *)this; + Object *editor_owner = (is_node || current_obj->is_class("MultiNodeEdit")) ? (Object *)SceneTreeDock::get_singleton() : is_resource ? (Object *)InspectorDock::get_inspector_singleton() + : (Object *)this; // Take care of the main editor plugin. @@ -2723,8 +2724,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { root_name = EditorNode::adjust_scene_name_casing(root_name); file->set_current_path(root_name + "." + extensions.front()->get().to_lower()); } - file->popup_file_dialog(); file->set_title(TTR("Save Scene As...")); + file->popup_file_dialog(); } break; @@ -3238,8 +3239,8 @@ void EditorNode::_export_as_menu_option(int p_idx) { file_export_lib->add_filter("*." + E); } - file_export_lib->popup_file_dialog(); file_export_lib->set_title(TTR("Export Mesh Library")); + file_export_lib->popup_file_dialog(); } else { // Custom menu options added by plugins if (export_as_menu->get_item_submenu(p_idx).is_empty()) { // If not a submenu Callable callback = export_as_menu->get_item_metadata(p_idx); @@ -3818,6 +3819,14 @@ void EditorNode::_set_current_scene_nocheck(int p_idx) { } } + if (editor_data.check_and_update_scene(p_idx)) { + if (!editor_data.get_scene_path(p_idx).is_empty()) { + editor_folding.load_scene_folding(editor_data.get_edited_scene_root(p_idx), editor_data.get_scene_path(p_idx)); + } + + EditorUndoRedoManager::get_singleton()->clear_history(false, editor_data.get_scene_history_id(p_idx)); + } + Dictionary state = editor_data.restore_edited_scene_state(editor_selection, &editor_history); _edit_current(true); @@ -3827,14 +3836,6 @@ void EditorNode::_set_current_scene_nocheck(int p_idx) { if (tabs_to_close.is_empty()) { callable_mp(this, &EditorNode::_set_main_scene_state).call_deferred(state, get_edited_scene()); // Do after everything else is done setting up. } - - if (editor_data.check_and_update_scene(p_idx)) { - if (!editor_data.get_scene_path(p_idx).is_empty()) { - editor_folding.load_scene_folding(editor_data.get_edited_scene_root(p_idx), editor_data.get_scene_path(p_idx)); - } - - EditorUndoRedoManager::get_singleton()->clear_history(false, editor_data.get_scene_history_id(p_idx)); - } } void EditorNode::setup_color_picker(ColorPicker *p_picker) { @@ -5279,6 +5280,12 @@ void EditorNode::_scene_tab_closed(int p_tab) { scene_tabs->update_scene_tabs(); } +void EditorNode::_cancel_close_scene_tab() { + if (_is_closing_editor()) { + tab_closing_menu_option = -1; + } +} + void EditorNode::_toggle_distraction_free_mode() { if (EDITOR_GET("interface/editor/separate_distraction_mode")) { int screen = -1; @@ -6829,6 +6836,8 @@ EditorNode::EditorNode() { settings_menu->add_shortcut(ED_SHORTCUT("editor/command_palette", TTR("Command Palette..."), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::P), HELP_COMMAND_PALETTE); settings_menu->add_separator(); + settings_menu->add_submenu_node_item(TTR("Editor Docks"), editor_dock_manager->get_docks_menu()); + editor_layouts = memnew(PopupMenu); editor_layouts->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); settings_menu->add_submenu_node_item(TTR("Editor Layout"), editor_layouts); @@ -6998,22 +7007,22 @@ EditorNode::EditorNode() { history_dock = memnew(HistoryDock); // Scene: Top left. - editor_dock_manager->add_control_to_dock(EditorDockManager::DOCK_SLOT_LEFT_UR, SceneTreeDock::get_singleton(), TTR("Scene")); + editor_dock_manager->add_dock(SceneTreeDock::get_singleton(), TTR("Scene"), EditorDockManager::DOCK_SLOT_LEFT_UR); // Import: Top left, behind Scene. - editor_dock_manager->add_control_to_dock(EditorDockManager::DOCK_SLOT_LEFT_UR, ImportDock::get_singleton(), TTR("Import")); + editor_dock_manager->add_dock(ImportDock::get_singleton(), TTR("Import"), EditorDockManager::DOCK_SLOT_LEFT_UR); // FileSystem: Bottom left. - editor_dock_manager->add_control_to_dock(EditorDockManager::DOCK_SLOT_LEFT_BR, FileSystemDock::get_singleton(), TTR("FileSystem"), ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_filesystem_bottom_panel", TTR("Toggle FileSystem Bottom Panel"), KeyModifierMask::ALT | Key::F)); + editor_dock_manager->add_dock(FileSystemDock::get_singleton(), TTR("FileSystem"), EditorDockManager::DOCK_SLOT_LEFT_BR, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_filesystem_bottom_panel", TTR("Toggle FileSystem Bottom Panel"), KeyModifierMask::ALT | Key::F)); // Inspector: Full height right. - editor_dock_manager->add_control_to_dock(EditorDockManager::DOCK_SLOT_RIGHT_UL, InspectorDock::get_singleton(), TTR("Inspector")); + editor_dock_manager->add_dock(InspectorDock::get_singleton(), TTR("Inspector"), EditorDockManager::DOCK_SLOT_RIGHT_UL); // Node: Full height right, behind Inspector. - editor_dock_manager->add_control_to_dock(EditorDockManager::DOCK_SLOT_RIGHT_UL, NodeDock::get_singleton(), TTR("Node")); + editor_dock_manager->add_dock(NodeDock::get_singleton(), TTR("Node"), EditorDockManager::DOCK_SLOT_RIGHT_UL); // History: Full height right, behind Node. - editor_dock_manager->add_control_to_dock(EditorDockManager::DOCK_SLOT_RIGHT_UL, history_dock, TTR("History")); + editor_dock_manager->add_dock(history_dock, TTR("History"), EditorDockManager::DOCK_SLOT_RIGHT_UL); // Add some offsets to left_r and main hsplits to make LEFT_R and RIGHT_L docks wider than minsize. left_r_hsplit->set_split_offset(270 * EDSCALE); @@ -7070,6 +7079,7 @@ EditorNode::EditorNode() { save_confirmation->set_min_size(Vector2(450.0 * EDSCALE, 0)); save_confirmation->connect("confirmed", callable_mp(this, &EditorNode::_menu_confirm_current)); save_confirmation->connect("custom_action", callable_mp(this, &EditorNode::_discard_changes)); + save_confirmation->connect("canceled", callable_mp(this, &EditorNode::_cancel_close_scene_tab)); gradle_build_manage_templates = memnew(ConfirmationDialog); gradle_build_manage_templates->set_text(TTR("Android build template is missing, please install relevant templates.")); @@ -7128,16 +7138,8 @@ EditorNode::EditorNode() { file_export_lib->set_title(TTR("Export Library")); file_export_lib->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_export_lib->connect("file_selected", callable_mp(this, &EditorNode::_dialog_action)); - file_export_lib_merge = memnew(CheckBox); - file_export_lib_merge->set_text(TTR("Merge With Existing")); - file_export_lib_merge->set_h_size_flags(Control::SIZE_SHRINK_CENTER); - file_export_lib_merge->set_pressed(true); - file_export_lib->get_vbox()->add_child(file_export_lib_merge); - file_export_lib_apply_xforms = memnew(CheckBox); - file_export_lib_apply_xforms->set_text(TTR("Apply MeshInstance Transforms")); - file_export_lib_apply_xforms->set_h_size_flags(Control::SIZE_SHRINK_CENTER); - file_export_lib_apply_xforms->set_pressed(false); - file_export_lib->get_vbox()->add_child(file_export_lib_apply_xforms); + file_export_lib->add_option(TTR("Merge With Existing"), Vector<String>(), true); + file_export_lib->add_option(TTR("Apply MeshInstance Transforms"), Vector<String>(), false); gui_base->add_child(file_export_lib); file_script = memnew(EditorFileDialog); |