From fc93591cab5333025982d0637338c3d256a7a02d Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sat, 9 Mar 2024 02:35:07 -0800 Subject: [PATCH] variants: fix onReload not being called after variant updates --- src/core/variants.cpp | 7 +++++++ src/core/variants.hpp | 1 + 2 files changed, 8 insertions(+) diff --git a/src/core/variants.cpp b/src/core/variants.cpp index e564e1b..eafd90a 100644 --- a/src/core/variants.cpp +++ b/src/core/variants.cpp @@ -46,6 +46,8 @@ void Variants::onReload(QObject* oldInstance) { if (instance != nullptr) instance->onReload(oldInstance); else Reloadable::reloadChildrenRecursive(instanceObj, oldInstance); } + + this->loaded = true; } void Variants::setVariants(QVariantList variants) { @@ -108,6 +110,11 @@ void Variants::updateVariants() { instance->setParent(this); this->instances.insert(variant, instance); + + if (this->loaded) { + if (auto* reloadable = qobject_cast(instance)) reloadable->onReload(nullptr); + else Reloadable::reloadChildrenRecursive(instance, nullptr); + } } outer:; diff --git a/src/core/variants.hpp b/src/core/variants.hpp index 79224e2..1c5b614 100644 --- a/src/core/variants.hpp +++ b/src/core/variants.hpp @@ -53,4 +53,5 @@ private: QQmlComponent* mComponent = nullptr; QVariantList mVariants; AwfulMap instances; + bool loaded = false; };