Skip to content

Commit 99f27b2

Browse files
authored
Fix floating window metric settings silently failing to persist (#4872)
1 parent de36c5d commit 99f27b2

1 file changed

Lines changed: 8 additions & 11 deletions

File tree

src/templateinfosenderbuilder.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -490,21 +490,18 @@ void TemplateInfoSenderBuilder::onSetSettings(const QJsonValue &msgContent, Temp
490490
QJsonObject outObj;
491491
QSettings settings;
492492
for (auto &key : keys) {
493+
val = obj[key];
494+
valConv = val.toVariant();
493495
if (settings.contains(key)) {
494-
val = obj[key];
495-
valConv = val.toVariant();
496496
settingVal = settings.value(key);
497-
if (valConv.type() == settingVal.type()) {
498-
settings.setValue(key, valConv);
499-
outObj.insert(key, val);
500-
} else {
501-
outObj.insert(key, QJsonValue::fromVariant(settingVal));
497+
if (valConv.type() != settingVal.type() && valConv.canConvert(settingVal.type())) {
498+
// QSettings backends don't always round-trip the original type (e.g. bool
499+
// coming back as QString/int), so coerce instead of silently dropping the update.
500+
valConv.convert(settingVal.type());
502501
}
503-
} else {
504-
val = obj[key];
505-
settings.setValue(key, val.toVariant());
506-
outObj.insert(key, val);
507502
}
503+
settings.setValue(key, valConv);
504+
outObj.insert(key, QJsonValue::fromVariant(valConv));
508505
}
509506
settings.sync();
510507
QJsonObject main;

0 commit comments

Comments
 (0)