Skip to content

Commit d3a7db4

Browse files
committed
Fix settings issue with list/object properties getting lost
1 parent 46a933e commit d3a7db4

3 files changed

Lines changed: 8 additions & 10 deletions

File tree

Source/Dialogs/OverlayDisplaySettings.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class OverlayDisplaySettings final : public Component
9191
}
9292

9393
overlayState->setProperty(name, buttonBit);
94-
SettingsFile::getInstance()->triggerSettingsChange("overlays");
94+
SettingsFile::getInstance()->setProperty("overlays", var(overlayState.get()));
9595
}
9696

9797
void resized() override
@@ -113,7 +113,7 @@ class OverlayDisplaySettings final : public Component
113113
explicit OverlayDisplaySettings(pd::Instance* pd)
114114
: pd(pd)
115115
{
116-
auto const overlayTree = SettingsFile::getInstance()->getProperty<DynamicObject>("overlays");
116+
auto overlayTree = SettingsFile::getInstance()->getProperty<DynamicObject>("overlays");
117117

118118
canvasLabel.setText("Canvas", dontSendNotification);
119119
canvasLabel.setFont(Fonts::getSemiBoldFont().withHeight(14));

Source/Utility/SettingsFile.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ SettingsFile* SettingsFile::initialise()
213213
// No need to alert the user to this
214214
if (!settingsFile.existsAsFile() && !oldSettingsFile.existsAsFile()) {
215215
for (auto& [name, var] : defaultSettings) {
216-
settings[name] = var;
216+
settings[name] = var.clone();
217217
}
218218
settings["themes"] = JSON::parse(PlugDataLook::defaultThemesJSON);
219219
saveSettings();
@@ -226,7 +226,7 @@ SettingsFile* SettingsFile::initialise()
226226
loadThemeFromDiff(*var.getArray());
227227
continue;
228228
}
229-
settings[name] = var;
229+
settings[name] = var.clone();
230230
}
231231
for (auto& [name, value] : settings) {
232232
value.addListener(this);
@@ -724,11 +724,7 @@ void SettingsFile::saveSettings()
724724
if (!themesToWrite.isEmpty())
725725
properties->setProperty("themes", themesToWrite);
726726
}
727-
else if(defaultSettings[name].isArray())
728-
{
729-
properties->setProperty(name, value);
730-
}
731-
else if(!defaultSettings[name].equalsWithSameType(value)) {
727+
else if(!defaultSettings.at(name).equalsWithSameType(value)) {
732728
properties->setProperty(name, value);
733729
}
734730
}

Source/Utility/SettingsFile.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ class SettingsFile final
129129

130130
UnorderedMap<String, Value> settings;
131131

132-
UnorderedMap<String, var> defaultSettings {
132+
UnorderedMap<String, var> const defaultSettings {
133133
{ "browser_path", var(ProjectInfo::appDataDir.getFullPathName()) },
134134
{ "theme", var("light") },
135135
{ "oversampling", var(0) },
@@ -176,8 +176,10 @@ class SettingsFile final
176176
{ "overlays", var(new DynamicObject()) },
177177
{ "themes", var(Array<var> {}) },
178178
{ "palettes", var(Array<var> {}) },
179+
{ "palettes_version", var(1) },
179180
{ "audio_setup", var(new DynamicObject()) },
180181
{ "window_size", var(Array<var> { 1000, 650 }) },
182+
{ "version", var("")},
181183
};
182184

183185
public:

0 commit comments

Comments
 (0)