MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _scene_tab_closed

Method _scene_tab_closed

editor/editor_node.cpp:6196–6239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6194}
6195
6196void EditorNode::_scene_tab_closed(int p_tab) {
6197 current_menu_option = SCENE_TAB_CLOSE;
6198 tab_closing_idx = p_tab;
6199 Node *scene = editor_data.get_edited_scene_root(p_tab);
6200 if (!scene) {
6201 _discard_changes();
6202 return;
6203 }
6204
6205 String scene_filename = scene->get_scene_file_path();
6206 String unsaved_message;
6207
6208 if (EditorUndoRedoManager::get_singleton()->is_history_unsaved(editor_data.get_scene_history_id(p_tab))) {
6209 if (scene_filename.is_empty()) {
6210 unsaved_message = TTR("This scene was never saved.");
6211 } else {
6212 unsaved_message = _get_unsaved_scene_dialog_text(scene_filename, started_timestamp);
6213 }
6214 } else {
6215 // Check if any plugin has unsaved changes in that scene.
6216 for (int i = 0; i < editor_data.get_editor_plugin_count(); i++) {
6217 unsaved_message = editor_data.get_editor_plugin(i)->get_unsaved_status(scene_filename);
6218 if (!unsaved_message.is_empty()) {
6219 break;
6220 }
6221 }
6222 }
6223
6224 if (!unsaved_message.is_empty()) {
6225 if (scene_tabs->get_current_tab() != p_tab) {
6226 _set_current_scene(p_tab);
6227 }
6228
6229 save_confirmation->set_ok_button_text(TTR("Save & Close"));
6230 save_confirmation->set_text(unsaved_message + "\n\n" + TTR("Save before closing?"));
6231 save_confirmation->reset_size();
6232 save_confirmation->popup_centered();
6233 } else {
6234 _discard_changes();
6235 }
6236
6237 save_editor_layout_delayed();
6238 scene_tabs->update_scene_tabs();
6239}
6240
6241void EditorNode::_cancel_close_scene_tab() {
6242 if (_is_closing_editor()) {

Callers

nothing calls this directly

Calls 15

TTRFunction · 0.85
get_scene_file_pathMethod · 0.80
is_history_unsavedMethod · 0.80
get_scene_history_idMethod · 0.80
get_editor_pluginMethod · 0.80
set_ok_button_textMethod · 0.80
popup_centeredMethod · 0.80
update_scene_tabsMethod · 0.80
get_edited_scene_rootMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected