summaryrefslogtreecommitdiffstats
path: root/editor/editor_node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_node.cpp')
-rw-r--r--editor/editor_node.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 645d6dd0f9..f5e13ac294 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -553,6 +553,7 @@ void EditorNode::_notification(int p_what) {
case NOTIFICATION_READY: {
{
+ started_timestamp = Time::get_singleton()->get_unix_time_from_system();
_initializing_plugins = true;
Vector<String> addons;
if (ProjectSettings::get_singleton()->has_setting("editor_plugins/enabled")) {
@@ -5517,7 +5518,19 @@ void EditorNode::_scene_tab_closed(int p_tab) {
if (scene_filename.is_empty()) {
unsaved_message = TTR("This scene was never saved.");
} else {
- unsaved_message = vformat(TTR("Scene \"%s\" has unsaved changes."), scene_filename);
+ // Consider editor startup to be a point of saving, so that when you
+ // close and reopen the editor, you don't get an excessively long
+ // "modified X hours ago".
+ const uint64_t last_modified_seconds = Time::get_singleton()->get_unix_time_from_system() - MAX(started_timestamp, FileAccess::get_modified_time(scene->get_scene_file_path()));
+ String last_modified_string;
+ if (last_modified_seconds < 120) {
+ last_modified_string = vformat(TTRN("%d second ago", "%d seconds ago", last_modified_seconds), last_modified_seconds);
+ } else if (last_modified_seconds < 7200) {
+ last_modified_string = vformat(TTRN("%d minute ago", "%d minutes ago", last_modified_seconds / 60), last_modified_seconds / 60);
+ } else {
+ last_modified_string = vformat(TTRN("%d hour ago", "%d hours ago", last_modified_seconds / 3600), last_modified_seconds / 3600);
+ }
+ unsaved_message = vformat(TTR("Scene \"%s\" has unsaved changes.\nLast saved: %s."), scene_filename, last_modified_string);
}
} else {
// Check if any plugin has unsaved changes in that scene.