fix: suppress warnings before component is complete
This commit is contained in:
parent
8c8d196e20
commit
9de094b5ed
4 changed files with 31 additions and 7 deletions
|
|
@ -2,6 +2,8 @@
|
|||
#include "config.hpp"
|
||||
#include "monitorconfigmanager.hpp"
|
||||
|
||||
#include <qquickitem.h>
|
||||
|
||||
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(); \
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue