fix: don't suppress warnings on non Item components

This commit is contained in:
2 * r + 2 * t 2026-04-13 03:43:53 +10:00
parent 06ad45d88a
commit 6a91535677
2 changed files with 7 additions and 3 deletions

View file

@ -57,7 +57,9 @@ void Config::attachedParentChange(
const Type* Config::name() const { \
if (m_config) \
return m_config->name(); \
if (m_complete && parent()) /* Suppress warnings before component is complete */ \
/* Suppress warnings before component is complete if attached to a QQuickItem. */ \
/* Raw QObjects are unable to inherit the screen (only QQuickItems can). */ \
if ((m_complete || !qobject_cast<QQuickItem*>(parent())) && parent()) \
qCWarning(lcConfig, "Config.%s accessed without a screen set on %s", #name, \
parent()->metaObject()->className()); \
return GlobalConfig::instance()->name(); \

View file

@ -4,6 +4,8 @@
#include "monitorconfigmanager.hpp"
#include "tokens.hpp"
#include <qquickitem.h>
namespace caelestia::config {
namespace {
@ -11,7 +13,7 @@ namespace {
const AppearanceConfig* resolveAppearance(GlobalConfig* config, bool complete, const char* prop, QObject* parent) {
if (config)
return config->appearance();
if (complete && parent)
if ((complete || !qobject_cast<QQuickItem*>(parent)) && parent)
qCWarning(lcConfig, "Tokens.%s accessed without a screen set on %s", prop, parent->metaObject()->className());
return GlobalConfig::instance()->appearance();
}
@ -95,7 +97,7 @@ const AppearanceTransparency* Tokens::transparency() const {
const SizeTokens* Tokens::sizes() const {
if (m_tokens)
return m_tokens->sizes();
if (m_complete && parent())
if ((m_complete || !qobject_cast<QQuickItem*>(parent())) && parent())
qCWarning(lcConfig, "Tokens.sizes accessed without a screen set on %s", parent()->metaObject()->className());
return TokenConfig::instance()->sizes();
}