From e16a70bee783d492ac36cbc9c6892f3cffab69be Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 12 Apr 2026 22:26:30 +1000 Subject: [PATCH] fix: don't sync global props Prevents warning on syncs as well --- plugin/src/Caelestia/Config/configobject.cpp | 8 ++++---- plugin/src/Caelestia/Config/configobject.hpp | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/plugin/src/Caelestia/Config/configobject.cpp b/plugin/src/Caelestia/Config/configobject.cpp index d4a1a77f..6a700cf4 100644 --- a/plugin/src/Caelestia/Config/configobject.cpp +++ b/plugin/src/Caelestia/Config/configobject.cpp @@ -29,7 +29,7 @@ void ConfigObject::loadFromJson(const QJsonObject& obj) { if (!obj.contains(key)) continue; - if (m_global && m_globalOnlyKeys.contains(key)) + if (m_global && isGlobalOnly(key)) qCWarning( lcConfig, "Option '%s' is global-only and will be ignored in per-monitor config", qUtf8Printable(key)); @@ -157,7 +157,7 @@ void ConfigObject::syncFromGlobal(ConfigObject* global) { continue; } - if (!prop.isWritable()) + if (!prop.isWritable() || isGlobalOnly(key)) continue; if (!m_loadedKeys.contains(key)) { @@ -188,7 +188,7 @@ void ConfigObject::resyncFromGlobal() { continue; } - if (!prop.isWritable()) + if (!prop.isWritable() || isGlobalOnly(key)) continue; if (!m_loadedKeys.contains(key)) { @@ -218,7 +218,7 @@ void ConfigObject::resetOption(const QString& name) { void ConfigObject::onGlobalPropertiesChanged(const QMap& changed) { for (auto it = changed.begin(); it != changed.end(); ++it) { - if (m_loadedKeys.contains(it.key())) + if (m_loadedKeys.contains(it.key()) || isGlobalOnly(it.key())) continue; int idx = metaObject()->indexOfProperty(it.key().toUtf8().constData()); diff --git a/plugin/src/Caelestia/Config/configobject.hpp b/plugin/src/Caelestia/Config/configobject.hpp index 8e3969a4..f3e10508 100644 --- a/plugin/src/Caelestia/Config/configobject.hpp +++ b/plugin/src/Caelestia/Config/configobject.hpp @@ -91,6 +91,8 @@ public: [[nodiscard]] bool isOverlay() const { return m_global != nullptr; } + [[nodiscard]] bool isGlobalOnly(const QString& name) const { return m_globalOnlyKeys.contains(name); } + Q_INVOKABLE void resetOption(const QString& name); template static bool updateMember(T& member, const T& value) {