diff options
| author | Bernhard Liebl | 2017-12-29 11:03:29 +0100 |
|---|---|---|
| committer | Bernhard Liebl | 2017-12-29 11:03:29 +0100 |
| commit | 62f3af9de14f89a66cc738fac4c4e470a180ec23 (patch) | |
| tree | 159a64628640422afbd10bbb1d3ced55320067c8 /editor/editor_settings.cpp | |
| parent | f11a1385054376bdc4cc01e6aa20d63508a5e6d4 (diff) | |
| download | godot-62f3af9de14f89a66cc738fac4c4e470a180ec23.tar.gz godot-62f3af9de14f89a66cc738fac4c4e470a180ec23.tar.zst godot-62f3af9de14f89a66cc738fac4c4e470a180ec23.zip | |
Diffstat (limited to 'editor/editor_settings.cpp')
| -rw-r--r-- | editor/editor_settings.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 3bd592e93..86eba790e 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -75,20 +75,33 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool return true; } + bool changed = false; + if (p_value.get_type() == Variant::NIL) { - props.erase(p_name); + if (props.has(p_name)) { + props.erase(p_name); + changed = true; + } } else { - if (props.has(p_name)) - props[p_name].variant = p_value; - else + if (props.has(p_name)) { + if (p_value != props[p_name].variant) { + props[p_name].variant = p_value; + changed = true; + } + } else { props[p_name] = VariantContainer(p_value, last_order++); + changed = true; + } if (save_changed_setting) { - props[p_name].save = true; + if (props[p_name].save != true) { + props[p_name].save = true; + changed = true; + } } } - if (p_emit_signal) { + if (changed && p_emit_signal) { emit_signal("settings_changed"); } return true; |
