From 9de094b5edf9a941687ffd9b8d2f415d69cb2d10 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 13 Apr 2026 03:14:10 +1000 Subject: [PATCH] fix: suppress warnings before component is complete --- plugin/src/Caelestia/Config/configattached.cpp | 10 +++++++++- plugin/src/Caelestia/Config/configattached.hpp | 7 ++++++- plugin/src/Caelestia/Config/tokensattached.cpp | 14 ++++++++++---- plugin/src/Caelestia/Config/tokensattached.hpp | 7 ++++++- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/plugin/src/Caelestia/Config/configattached.cpp b/plugin/src/Caelestia/Config/configattached.cpp index 5cafe34a..0a97c8c0 100644 --- a/plugin/src/Caelestia/Config/configattached.cpp +++ b/plugin/src/Caelestia/Config/configattached.cpp @@ -2,6 +2,8 @@ #include "config.hpp" #include "monitorconfigmanager.hpp" +#include + namespace caelestia::config { Config::Config(QObject* parent) @@ -9,6 +11,12 @@ Config::Config(QObject* parent) initialize(); } +void Config::classBegin() {} + +void Config::componentComplete() { + m_complete = true; +} + QString Config::screen() const { return m_screen; } @@ -49,7 +57,7 @@ void Config::attachedParentChange( const Type* Config::name() const { \ if (m_config) \ return m_config->name(); \ - if (parent()) \ + if (m_complete && parent()) /* Suppress warnings before component is complete */ \ qCWarning(lcConfig, "Config.%s accessed without a screen set on %s", #name, \ parent()->metaObject()->className()); \ return GlobalConfig::instance()->name(); \ diff --git a/plugin/src/Caelestia/Config/configattached.hpp b/plugin/src/Caelestia/Config/configattached.hpp index 2b4c32a1..35ccc6e4 100644 --- a/plugin/src/Caelestia/Config/configattached.hpp +++ b/plugin/src/Caelestia/Config/configattached.hpp @@ -6,8 +6,9 @@ namespace caelestia::config { -class Config : public QQuickAttachedPropertyPropagator { +class Config : public QQuickAttachedPropertyPropagator, public QQmlParserStatus { Q_OBJECT + Q_INTERFACES(QQmlParserStatus) QML_ELEMENT QML_UNCREATABLE("") QML_ATTACHED(Config) @@ -67,8 +68,12 @@ protected: QQuickAttachedPropertyPropagator* newParent, QQuickAttachedPropertyPropagator* oldParent) override; private: + void classBegin() override; + void componentComplete() override; + void propagateScreen(); + bool m_complete = false; QString m_screen; GlobalConfig* m_config = nullptr; }; diff --git a/plugin/src/Caelestia/Config/tokensattached.cpp b/plugin/src/Caelestia/Config/tokensattached.cpp index b9cf5745..627b50bf 100644 --- a/plugin/src/Caelestia/Config/tokensattached.cpp +++ b/plugin/src/Caelestia/Config/tokensattached.cpp @@ -8,10 +8,10 @@ namespace caelestia::config { namespace { -const AppearanceConfig* resolveAppearance(GlobalConfig* config, const char* prop, QObject* parent) { +const AppearanceConfig* resolveAppearance(GlobalConfig* config, bool complete, const char* prop, QObject* parent) { if (config) return config->appearance(); - if (parent) + if (complete && parent) qCWarning(lcConfig, "Tokens.%s accessed without a screen set on %s", prop, parent->metaObject()->className()); return GlobalConfig::instance()->appearance(); } @@ -25,6 +25,12 @@ Tokens::Tokens(QObject* parent) initialize(); } +void Tokens::classBegin() {} + +void Tokens::componentComplete() { + m_complete = true; +} + QString Tokens::screen() const { return m_screen; } @@ -71,7 +77,7 @@ void Tokens::bindAnim() { #define TOKENS_ATTACHED_GETTER(Type, name) \ const Type* Tokens::name() const { \ - auto* a = resolveAppearance(m_config, #name, parent()); \ + auto* a = resolveAppearance(m_config, m_complete, #name, parent()); \ return a ? a->name() : nullptr; \ } @@ -89,7 +95,7 @@ const AppearanceTransparency* Tokens::transparency() const { const SizeTokens* Tokens::sizes() const { if (m_tokens) return m_tokens->sizes(); - if (parent()) + if (m_complete && parent()) qCWarning(lcConfig, "Tokens.sizes accessed without a screen set on %s", parent()->metaObject()->className()); return TokenConfig::instance()->sizes(); } diff --git a/plugin/src/Caelestia/Config/tokensattached.hpp b/plugin/src/Caelestia/Config/tokensattached.hpp index 4fa1a9b5..6416bda5 100644 --- a/plugin/src/Caelestia/Config/tokensattached.hpp +++ b/plugin/src/Caelestia/Config/tokensattached.hpp @@ -9,8 +9,9 @@ namespace caelestia::config { -class Tokens : public QQuickAttachedPropertyPropagator { +class Tokens : public QQuickAttachedPropertyPropagator, public QQmlParserStatus { Q_OBJECT + Q_INTERFACES(QQmlParserStatus) QML_ELEMENT QML_UNCREATABLE("") QML_ATTACHED(Tokens) @@ -51,9 +52,13 @@ protected: QQuickAttachedPropertyPropagator* newParent, QQuickAttachedPropertyPropagator* oldParent) override; private: + void classBegin() override; + void componentComplete() override; + void propagateScreen(); void bindAnim(); + bool m_complete = false; QString m_screen; GlobalConfig* m_config = nullptr; TokenConfig* m_tokens = nullptr;