Преглед изворни кода

Merge pull request #95704 from KoBeWi/what_in_the_name_of_godot

Don't mark settings as modified while loading
Rémi Verschelde пре 1 година
родитељ
комит
7f6b4eb5ee
2 измењених фајлова са 8 додато и 5 уклоњено
  1. 6 4
      editor/editor_settings.cpp
  2. 2 1
      editor/editor_settings.h

+ 6 - 4
editor/editor_settings.cpp

@@ -65,7 +65,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
 	_THREAD_SAFE_METHOD_
 
 	bool changed = _set_only(p_name, p_value);
-	if (changed) {
+	if (changed && initialized) {
 		changed_settings.insert(p_name);
 		emit_signal(SNAME("settings_changed"));
 	}
@@ -330,6 +330,10 @@ bool EditorSettings::has_default_value(const String &p_setting) const {
 	return props[p_setting].has_default_value;
 }
 
+void EditorSettings::_set_initialized() {
+	initialized = true;
+}
+
 void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
 	_THREAD_SAFE_METHOD_
 // Sets up the editor setting with a default value and hint PropertyInfo.
@@ -1927,7 +1931,5 @@ EditorSettings::EditorSettings() {
 	last_order = 0;
 
 	_load_defaults();
-}
-
-EditorSettings::~EditorSettings() {
+	callable_mp(this, &EditorSettings::_set_initialized).call_deferred();
 }

+ 2 - 1
editor/editor_settings.h

@@ -98,6 +98,7 @@ private:
 
 	bool save_changed_setting = true;
 	bool optimize_save = true; //do not save stuff that came from config but was not set from engine
+	bool initialized = false;
 
 	bool _set(const StringName &p_name, const Variant &p_value);
 	bool _set_only(const StringName &p_name, const Variant &p_value);
@@ -108,6 +109,7 @@ private:
 	bool _property_can_revert(const StringName &p_name) const;
 	bool _property_get_revert(const StringName &p_name, Variant &r_property) const;
 
+	void _set_initialized();
 	void _load_defaults(Ref<ConfigFile> p_extra_config = Ref<ConfigFile>());
 	void _load_godot2_text_editor_theme();
 	void _load_default_visual_shader_editor_theme();
@@ -196,7 +198,6 @@ public:
 #endif
 
 	EditorSettings();
-	~EditorSettings();
 };
 
 //not a macro any longer