aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlengine
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-03-02 09:09:17 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2018-03-08 07:52:23 +0000
commit5e0c3a798ab0d70be45a107661fc5f0a17322a2a (patch)
treed81a27be09f1949132aae28e136ee89b4863bb01 /tests/auto/qml/qqmlengine
parent416e3f080fa71249fd5be417d6abef5817f2197d (diff)
Fix calling Qt.createComponent() from QQmlEngine::evaluate()
If we're run from a top-level evaluate() call from the JS engine, then let's assume that any created components are top-level components that belong to the root QML engine context. This is not quite a typical use-case, but our API allows for this and this seems like an easy and sensible solution. Task-number: QTBUG-66792 Change-Id: Ic1c9171c257e8e60c0b2c43f9194bd038744ed2d Reviewed-by: Oleg Yadrov <oleg.yadrov@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'tests/auto/qml/qqmlengine')
-rw-r--r--tests/auto/qml/qqmlengine/tst_qqmlengine.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
index bf964a5744..52e18011cb 100644
--- a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
+++ b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
@@ -76,6 +76,7 @@ private slots:
void qmlContextProperties();
void testGCCorruption();
void testGroupedPropertyRevisions();
+ void componentFromEval();
public slots:
QObject *createAQObjectForOwnershipTest ()
@@ -885,6 +886,17 @@ void tst_qqmlengine::testGroupedPropertyRevisions()
QVERIFY(!c2.errorString().isEmpty());
}
+void tst_qqmlengine::componentFromEval()
+{
+ QQmlEngine engine;
+ const QUrl testUrl = testFileUrl("EmptyComponent.qml");
+ QJSValue result = engine.evaluate("Qt.createComponent(\"" + testUrl.toString() + "\");");
+ QPointer<QQmlComponent> component(qobject_cast<QQmlComponent*>(result.toQObject()));
+ QVERIFY(!component.isNull());
+ QScopedPointer<QObject> item(component->create());
+ QVERIFY(!item.isNull());
+}
+
QTEST_MAIN(tst_qqmlengine)
#include "tst_qqmlengine.moc"