client: Fix settings upgrade missing some steps
authorShane Synan <digitalcircuit36939@gmail.com>
Fri, 22 Jun 2018 05:18:09 +0000 (00:18 -0500)
committerManuel Nickschas <sputnick@quassel-irc.org>
Tue, 10 Jul 2018 20:34:39 +0000 (22:34 +0200)
Remove cache check in Settings::localKeyExists().  This fixes
settings version upgrade wrongly skipping some steps due to earlier
migration steps causing default values (not stored in .conf) to be
loaded into settings cache.  Most notably, creating/writing the
QtUiStyle settings Qt StyleSheet.

The symptoms are only visible when migrating multiple steps at once,
hence not catching this earlier.

Bug originally introduced in d2ac8f78a0e050d2efa397c434b249d6b3391576

src/common/settings.cpp

index 2d79ffe..6273f7c 100644 (file)
@@ -207,9 +207,8 @@ const QVariant &Settings::localValue(const QString &key, const QVariant &def)
 bool Settings::localKeyExists(const QString &key)
 {
     QString normKey = normalizedKey(group, key);
-    if (isCached(normKey))
-        return true;
-
+    // Do NOT check the cache as default values get cached, too.  Otherwise loading a setting once
+    // will mark it as existing in settings, even when it only exists in cache (and not on disk).
     create_qsettings;
     return s.contains(normKey);
 }