diff options
Diffstat (limited to 'src/qmltest/quicktest_p.h')
-rw-r--r-- | src/qmltest/quicktest_p.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/qmltest/quicktest_p.h b/src/qmltest/quicktest_p.h index 50fc3be050..88f56d3038 100644 --- a/src/qmltest/quicktest_p.h +++ b/src/qmltest/quicktest_p.h @@ -64,16 +64,18 @@ class QTestRootObject : public QObject Q_PROPERTY(bool windowShown READ windowShown NOTIFY windowShownChanged) Q_PROPERTY(bool hasTestCase READ hasTestCase WRITE setHasTestCase NOTIFY hasTestCaseChanged) Q_PROPERTY(QObject *defined READ defined) + QML_SINGLETON QML_ELEMENT + QML_ADDED_IN_VERSION(1, 0) public: - QTestRootObject(QObject *parent = nullptr) - : QObject(parent), hasQuit(false), m_windowShown(false), m_hasTestCase(false) { - m_defined = new QQmlPropertyMap(this); -#if defined(QT_OPENGL_ES_2_ANGLE) - m_defined->insert(QLatin1String("QT_OPENGL_ES_2_ANGLE"), QVariant(true)); -#endif + static QTestRootObject *create(QQmlEngine *q, QJSEngine *) + { + QTestRootObject *result = instance(); + QQmlEngine *engine = qmlEngine(result); + // You can only test on one engine at a time + return (engine == nullptr || engine == q) ? result : nullptr; } static QTestRootObject *instance() { @@ -103,6 +105,14 @@ private Q_SLOTS: void quit() { hasQuit = true; } private: + QTestRootObject(QObject *parent = nullptr) + : QObject(parent), hasQuit(false), m_windowShown(false), m_hasTestCase(false) { + m_defined = new QQmlPropertyMap(this); +#if defined(QT_OPENGL_ES_2_ANGLE) + m_defined->insert(QLatin1String("QT_OPENGL_ES_2_ANGLE"), QVariant(true)); +#endif + } + bool m_windowShown : 1; bool m_hasTestCase :1; QQmlPropertyMap *m_defined; |