diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-11-11 14:08:23 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-11-11 20:30:34 +0100 |
| commit | 0dddc5eb7b60efd4f124485fd6e3e982c04f8a28 (patch) | |
| tree | 12b9a41d83dee4fdd15bd8aa1c1c2ad6f32157fe /src | |
| parent | f53d04a84d148a771dab3de9fe5f2f28e2d0240d (diff) | |
Fix handling of previous 'enabled' settings.
Diffstat (limited to 'src')
| -rw-r--r-- | src/settings.cpp | 17 |
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; |
