summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-11-11 14:08:23 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2020-11-11 20:30:34 +0100
commit0dddc5eb7b60efd4f124485fd6e3e982c04f8a28 (patch)
tree12b9a41d83dee4fdd15bd8aa1c1c2ad6f32157fe /src
parentf53d04a84d148a771dab3de9fe5f2f28e2d0240d (diff)
Fix handling of previous 'enabled' settings.
Diffstat (limited to 'src')
-rw-r--r--src/settings.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index a76d5e76..db48cfd2 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1280,19 +1280,22 @@ void PluginSettings::registerPlugin(IPlugin *plugin)
const QString settingName = plugin->name() + "/" + setting.key;
QVariant temp = get<QVariant>(
- m_Settings, "Plugins", settingName, setting.defaultValue);
+ m_Settings, "Plugins", settingName, QVariant());
- if (!temp.convert(setting.defaultValue.type())) {
+ // No previous enabled? Skip.
+ if (setting.key == "enabled" && (!temp.isValid() || !temp.canConvert<bool>())) {
+ continue;
+ }
+
+ if (!temp.isValid()) {
+ temp = setting.defaultValue;
+ }
+ else if (!temp.convert(setting.defaultValue.type())) {
log::warn(
"failed to interpret \"{}\" as correct type for \"{}\" in plugin \"{}\", using default",
temp.toString(), setting.key, plugin->name());
temp = setting.defaultValue;
-
- // If there was no previous "enabled" value, skip it:
- if (setting.key == "enabled") {
- continue;
- }
}
m_PluginSettings[plugin->name()][setting.key] = temp;