diff options
author | Daniel J. Ramirez <djrmuv@gmail.com> | 2017-11-29 21:11:53 -0600 |
---|---|---|
committer | Daniel J. Ramirez <djrmuv@gmail.com> | 2017-11-29 22:04:41 -0600 |
commit | 4b80bc3303c88b545d63c6d8ecd63ad22d44ac3d (patch) | |
tree | 8f16b54ad9aa058331608e9dc6271027349e86fb /editor | |
parent | 9725f33ac606ed4b26573015bcfdb86ed6741323 (diff) |
Fixed editor settings disappearing (caused by uninitialized variable).
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_settings.cpp | 15 | ||||
-rw-r--r-- | editor/editor_settings.h | 5 |
2 files changed, 15 insertions, 5 deletions
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 52672fff72..638b23382d 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -75,10 +75,9 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool return true; } - if (p_value.get_type() == Variant::NIL) + if (p_value.get_type() == Variant::NIL) { props.erase(p_name); - else { - + } else { if (props.has(p_name)) props[p_name].variant = p_value; else @@ -967,6 +966,8 @@ void EditorSettings::raise_order(const String &p_setting) { void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value) { + _THREAD_SAFE_METHOD_ + if (!props.has(p_setting)) return; props[p_setting].initial = p_value; @@ -979,7 +980,8 @@ Variant _EDITOR_DEF(const String &p_setting, const Variant &p_default) { if (EditorSettings::get_singleton()->has_setting(p_setting)) ret = EditorSettings::get_singleton()->get(p_setting); else - EditorSettings::get_singleton()->set(p_setting, p_default); + EditorSettings::get_singleton()->set_manually(p_setting, p_default); + if (!EditorSettings::get_singleton()->has_default_value(p_setting)) EditorSettings::get_singleton()->set_initial_value(p_setting, p_default); @@ -997,12 +999,15 @@ bool EditorSettings::property_can_revert(const String &p_setting) { if (!props.has(p_setting)) return false; + if (!props[p_setting].has_default_value) + return false; + return props[p_setting].initial != props[p_setting].variant; } Variant EditorSettings::property_get_revert(const String &p_setting) { - if (!props.has(p_setting)) + if (!props.has(p_setting) || !props[p_setting].has_default_value) return Variant(); return props[p_setting].initial; diff --git a/editor/editor_settings.h b/editor/editor_settings.h index a8c991a6d9..5b15b1d6be 100644 --- a/editor/editor_settings.h +++ b/editor/editor_settings.h @@ -70,6 +70,8 @@ private: bool hide_from_editor; bool save; VariantContainer() { + variant = Variant(); + initial = Variant(); order = 0; hide_from_editor = false; has_default_value = false; @@ -77,8 +79,11 @@ private: } VariantContainer(const Variant &p_variant, int p_order) { variant = p_variant; + initial = Variant(); order = p_order; hide_from_editor = false; + has_default_value = false; + save = false; } }; |