Skip to content

Commit

Permalink
Merge pull request #80976 from Calinou/editor-unsaved-changes-display…
Browse files Browse the repository at this point in the history
…-last-save-time

Display time of last save in the unsaved changes confirmation editor dialog
  • Loading branch information
akien-mga committed Aug 31, 2023
2 parents aa9f358 + 3ba0316 commit 59de8f9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
15 changes: 14 additions & 1 deletion editor/editor_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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")) {
Expand Down Expand Up @@ -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.
Expand Down
2 changes: 2 additions & 0 deletions editor/editor_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,8 @@ class EditorNode : public Node {

Timer *screenshot_timer = nullptr;

uint64_t started_timestamp = 0;

PluginConfigDialog *plugin_config_dialog = nullptr;

RichTextLabel *load_errors = nullptr;
Expand Down

0 comments on commit 59de8f9

Please sign in to comment.