diff --git a/src/core/generation.cpp b/src/core/generation.cpp index 147e2f93..f4fcde63 100644 --- a/src/core/generation.cpp +++ b/src/core/generation.cpp @@ -24,7 +24,7 @@ #include "reload.hpp" #include "scan.hpp" -static QHash g_generations; // NOLINT +static QHash g_generations; // NOLINT EngineGeneration::EngineGeneration(const QDir& rootPath, QmlScanner scanner) : rootPath(rootPath) @@ -326,11 +326,13 @@ EngineGeneration* EngineGeneration::currentGeneration() { } else return nullptr; } -EngineGeneration* EngineGeneration::findEngineGeneration(QQmlEngine* engine) { +EngineGeneration* EngineGeneration::findEngineGeneration(const QQmlEngine* engine) { return g_generations.value(engine); } -EngineGeneration* EngineGeneration::findObjectGeneration(QObject* object) { +EngineGeneration* EngineGeneration::findObjectGeneration(const QObject* object) { + if (g_generations.size() == 1) return EngineGeneration::currentGeneration(); + while (object != nullptr) { auto* context = QQmlEngine::contextForObject(object); diff --git a/src/core/generation.hpp b/src/core/generation.hpp index 043d2f70..2d842829 100644 --- a/src/core/generation.hpp +++ b/src/core/generation.hpp @@ -45,8 +45,8 @@ public: void registerExtension(const void* key, EngineGenerationExt* extension); EngineGenerationExt* findExtension(const void* key); - static EngineGeneration* findEngineGeneration(QQmlEngine* engine); - static EngineGeneration* findObjectGeneration(QObject* object); + static EngineGeneration* findEngineGeneration(const QQmlEngine* engine); + static EngineGeneration* findObjectGeneration(const QObject* object); // Returns the current generation if there is only one generation, // otherwise null.