fix: ensure singletons exist when evaluating attached props

This commit is contained in:
2 * r + 2 * t 2026-04-11 21:08:09 +10:00
parent 4f2b90147e
commit 324acb492a
2 changed files with 14 additions and 2 deletions

View file

@ -140,7 +140,8 @@ void Config::connectScope() {
const Type* Config::name() const { \
if (m_scope && m_scope->config()) \
return m_scope->config()->name(); \
return GlobalConfig::instance()->name(); \
auto* global = GlobalConfig::instance(); \
return global ? global->name() : nullptr; \
}
CONFIG_ATTACHED_GETTER(AppearanceConfig, appearance)
@ -164,6 +165,11 @@ CONFIG_ATTACHED_GETTER(UserPaths, paths)
#undef CONFIG_ATTACHED_GETTER
Config* Config::qmlAttachedProperties(QObject* object) {
// Ensure GlobalConfig singleton is created before any attached property access
if (!GlobalConfig::instance()) {
if (auto* engine = qmlEngine(object))
engine->singletonInstance<GlobalConfig*>("Caelestia.Config", "GlobalConfig");
}
return new Config(ConfigScope::find(object), object);
}

View file

@ -99,7 +99,8 @@ void Tokens::connectScope() {
const Type* Tokens::name() const { \
if (m_scope && m_scope->tokens()) \
return m_scope->tokens()->name(); \
return TokenConfig::instance()->name(); \
auto* global = TokenConfig::instance(); \
return global ? global->name() : nullptr; \
}
TOKENS_ATTACHED_GETTER(AppearanceTokens, appearance)
@ -118,6 +119,11 @@ TOKENS_ATTACHED_GETTER(ControlCenterTokens, controlCenter)
#undef TOKENS_ATTACHED_GETTER
Tokens* Tokens::qmlAttachedProperties(QObject* object) {
// Ensure TokenConfig singleton is created before any attached property access
if (!TokenConfig::instance()) {
if (auto* engine = qmlEngine(object))
engine->singletonInstance<TokenConfig*>("Caelestia.Config", "TokenConfig");
}
return new Tokens(ConfigScope::find(object), object);
}