From f7aec30ad20536cf945b8f497cdc286a047252b1 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 11 Apr 2026 02:52:17 +1000 Subject: [PATCH] fix: use private constructor for singleton --- plugin/src/Caelestia/Config/config.cpp | 15 ++++++++++----- plugin/src/Caelestia/Config/config.hpp | 5 +++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/plugin/src/Caelestia/Config/config.cpp b/plugin/src/Caelestia/Config/config.cpp index 02014577..dfee35f4 100644 --- a/plugin/src/Caelestia/Config/config.cpp +++ b/plugin/src/Caelestia/Config/config.cpp @@ -4,12 +4,14 @@ namespace caelestia::config { -static GlobalConfig* s_instance = nullptr; +namespace { -static QString configDir() { +QString configDir() { return QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QStringLiteral("/caelestia/"); } +} // namespace + GlobalConfig::GlobalConfig(QObject* parent) : ConfigObject(parent) , m_appearance(new AppearanceConfig(this)) @@ -30,8 +32,6 @@ GlobalConfig::GlobalConfig(QObject* parent) , m_services(new ServiceConfig(this)) , m_paths(new UserPaths(this)) , m_advanced(new AdvancedConfig(this)) { - s_instance = this; - // Bind token base values from advanced config to appearance computed properties auto* adv = m_advanced->appearance(); m_appearance->rounding()->bindTokens(adv->rounding()); @@ -46,7 +46,12 @@ GlobalConfig::GlobalConfig(QObject* parent) } GlobalConfig* GlobalConfig::instance() { - return s_instance; + static GlobalConfig instance; + return &instance; +} + +GlobalConfig* GlobalConfig::create(QQmlEngine*, QJSEngine*) { + return instance(); } void GlobalConfig::save() { diff --git a/plugin/src/Caelestia/Config/config.hpp b/plugin/src/Caelestia/Config/config.hpp index ecd26634..fda17721 100644 --- a/plugin/src/Caelestia/Config/config.hpp +++ b/plugin/src/Caelestia/Config/config.hpp @@ -50,9 +50,8 @@ class GlobalConfig : public ConfigObject { Q_PROPERTY(AdvancedConfig* advanced READ advanced CONSTANT) public: - explicit GlobalConfig(QObject* parent = nullptr); - static GlobalConfig* instance(); + static GlobalConfig* create(QQmlEngine*, QJSEngine*); [[nodiscard]] AdvancedConfig* advanced() const { return m_advanced; } @@ -60,6 +59,8 @@ public: Q_INVOKABLE void reload(); private: + explicit GlobalConfig(QObject* parent = nullptr); + AdvancedConfig* m_advanced = nullptr; };