diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-03-02 09:09:17 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-03-08 07:52:23 +0000 |
commit | 5e0c3a798ab0d70be45a107661fc5f0a17322a2a (patch) | |
tree | d81a27be09f1949132aae28e136ee89b4863bb01 /tests/auto/qml/qqmlengine | |
parent | 416e3f080fa71249fd5be417d6abef5817f2197d (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.cpp | 12 |
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" |