From f10c30a9ed6690ed98c3953a923689589f244f3b Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sun, 11 Apr 2021 15:39:31 +0200 Subject: Add a "save on focus loss" editor setting (disabled by default) This performs a Ctrl + S action every time the editor window loses focus, saving both scenes and scripts as needed. --- editor/editor_node.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 055baeb81e..a1fbda5f45 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -601,7 +601,7 @@ void EditorNode::_notification(int p_what) { } break; case NOTIFICATION_APPLICATION_FOCUS_IN: { - // Restore the original FPS cap after focusing back on the editor + // Restore the original FPS cap after focusing back on the editor. OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/low_processor_mode_sleep_usec"))); EditorFileSystem::get_singleton()->scan_changes(); @@ -609,7 +609,12 @@ void EditorNode::_notification(int p_what) { } break; case NOTIFICATION_APPLICATION_FOCUS_OUT: { - // Set a low FPS cap to decrease CPU/GPU usage while the editor is unfocused + // Save on focus loss before applying the FPS limit to avoid slowing down the saving process. + if (EDITOR_GET("interface/editor/save_on_focus_loss")) { + _menu_option_confirm(FILE_SAVE_SCENE, false); + } + + // Set a low FPS cap to decrease CPU/GPU usage while the editor is unfocused. OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/unfocused_low_processor_mode_sleep_usec"))); } break; @@ -5876,6 +5881,7 @@ EditorNode::EditorNode() { EDITOR_DEF("run/output/always_open_output_on_play", true); EDITOR_DEF("run/output/always_close_output_on_stop", true); EDITOR_DEF("run/auto_save/save_before_running", true); + EDITOR_DEF("interface/editor/save_on_focus_loss", false); EDITOR_DEF_RST("interface/editor/save_each_scene_on_quit", true); EDITOR_DEF("interface/editor/show_update_spinner", false); EDITOR_DEF("interface/editor/update_continuously", false); -- cgit v1.2.3