summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorkobewi <kobewi4e@gmail.com>2021-01-17 01:09:17 +0100
committerkobewi <kobewi4e@gmail.com>2021-02-09 14:44:44 +0100
commitc390c82014c23d7396cec731fceb515a354fe752 (patch)
treeb84057edb287e3a0e7a7e3270d91d3478218f38b /editor
parent412125f1910c78d0b6a969ac952cddbad6ca0df4 (diff)
Detect external modification of project.godot
Diffstat (limited to 'editor')
-rw-r--r--editor/editor_data.h2
-rw-r--r--editor/editor_node.cpp15
-rw-r--r--editor/editor_node.h1
3 files changed, 16 insertions, 2 deletions
diff --git a/editor/editor_data.h b/editor/editor_data.h
index 2f1106e62a..b1fd6726f6 100644
--- a/editor/editor_data.h
+++ b/editor/editor_data.h
@@ -111,7 +111,7 @@ public:
struct EditedScene {
Node *root = nullptr;
String path;
- uint64_t file_modified_time;
+ uint64_t file_modified_time = 0;
Dictionary editor_states;
List<Node *> selection;
Vector<EditorHistory::History> history_stored;
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 08198d37af..5396d6554f 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -904,6 +904,13 @@ void EditorNode::_scan_external_changes() {
}
}
+ String project_settings_path = ProjectSettings::get_singleton()->get_resource_path().plus_file("project.godot");
+ if (FileAccess::get_modified_time(project_settings_path) > ProjectSettings::get_singleton()->get_last_saved_time()) {
+ TreeItem *ti = disk_changed_list->create_item(r);
+ ti->set_text(0, "project.godot");
+ need_reload = true;
+ }
+
if (need_reload) {
disk_changed->call_deferred("popup_centered_ratio", 0.5);
}
@@ -911,6 +918,7 @@ void EditorNode::_scan_external_changes() {
void EditorNode::_resave_scenes(String p_str) {
save_all_scenes();
+ ProjectSettings::get_singleton()->save();
disk_changed->hide();
}
@@ -932,7 +940,7 @@ void EditorNode::_reload_modified_scenes() {
Error err = load_scene(filename, false, false, true, false, true);
if (err != OK) {
- ERR_PRINT("Failed to load scene");
+ ERR_PRINT(vformat("Failed to load scene: %s", filename));
}
editor_data.move_edited_scene_to_index(i);
}
@@ -944,6 +952,10 @@ void EditorNode::_reload_modified_scenes() {
disk_changed->hide();
}
+void EditorNode::_reload_project_settings() {
+ ProjectSettings::get_singleton()->setup(ProjectSettings::get_singleton()->get_resource_path(), String(), true);
+}
+
void EditorNode::_vp_resized() {
}
@@ -6681,6 +6693,7 @@ EditorNode::EditorNode() {
disk_changed_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
disk_changed->connect("confirmed", callable_mp(this, &EditorNode::_reload_modified_scenes));
+ disk_changed->connect("confirmed", callable_mp(this, &EditorNode::_reload_project_settings));
disk_changed->get_ok_button()->set_text(TTR("Reload"));
disk_changed->add_button(TTR("Resave"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "resave");
diff --git a/editor/editor_node.h b/editor/editor_node.h
index d2334806d5..d962ffe6fd 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -646,6 +646,7 @@ private:
void _resources_changed(const Vector<String> &p_resources);
void _scan_external_changes();
void _reload_modified_scenes();
+ void _reload_project_settings();
void _resave_scenes(String p_str);
void _feature_profile_changed();