diff options
7 files changed, 60 insertions, 38 deletions
diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp index b95290a3c..41daf0921 100644 --- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp +++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp @@ -148,7 +148,7 @@ void Quick3DNodeInstantiatorPrivate::_q_createdItem(int idx, QObject *item) Q_Q(Quick3DNodeInstantiator); if (m_objects.contains(item)) //Case when it was created synchronously in regenerate return; - static_cast<QNode *>(item)->setParent(q); + static_cast<QNode *>(item)->setParent(q->parentNode()); m_objects.insert(idx, item); if (m_objects.count() == 1) q->objectChanged(); diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultiple.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultiple.qml index 67c1e4fe7..c1f3b21ed 100644 --- a/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultiple.qml +++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultiple.qml @@ -1,10 +1,12 @@ import QtQml 2.1 import Qt3D.Core 2.0 -NodeInstantiator { - model: 10 - delegate: Entity { - property bool success: true - property int idx: index +Entity { + NodeInstantiator { + model: 10 + delegate: Entity { + property bool success: true + property int idx: index + } } } diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/createNone.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/createNone.qml index 736a02b45..eef31cb8c 100644 --- a/tests/auto/quick3d/quick3dnodeinstantiator/data/createNone.qml +++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/createNone.qml @@ -1,13 +1,15 @@ import QtQml 2.1 import Qt3D.Core 2.0 -NodeInstantiator { - model: 0 - property bool success: true - Entity { +Entity { + NodeInstantiator { + model: 0 property bool success: true - property int idx: index + Entity { + property bool success: true + property int idx: index + } + onObjectChanged: success = false;//Don't create intermediate objects + onCountChanged: success = false;//Don't create intermediate objects } - onObjectChanged: success = false;//Don't create intermediate objects - onCountChanged: success = false;//Don't create intermediate objects } diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/createSingle.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/createSingle.qml index 630da9940..5a79d6105 100644 --- a/tests/auto/quick3d/quick3dnodeinstantiator/data/createSingle.qml +++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/createSingle.qml @@ -1,9 +1,11 @@ import QtQml 2.1 import Qt3D.Core 2.0 -NodeInstantiator { - Entity { - property bool success: true - property int idx: index +Entity { + NodeInstantiator { + Entity { + property bool success: true + property int idx: index + } } } diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/inactive.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/inactive.qml index 178229059..8ae6994db 100644 --- a/tests/auto/quick3d/quick3dnodeinstantiator/data/inactive.qml +++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/inactive.qml @@ -1,10 +1,12 @@ import QtQml 2.1 import Qt3D.Core 2.0 -NodeInstantiator { - active: false - Entity { - property bool success: true - property int idx: index +Entity { + NodeInstantiator { + active: false + Entity { + property bool success: true + property int idx: index + } } } diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/stringModel.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/stringModel.qml index 431c1ebd8..5aa4d399a 100644 --- a/tests/auto/quick3d/quick3dnodeinstantiator/data/stringModel.qml +++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/stringModel.qml @@ -1,10 +1,12 @@ import QtQml 2.1 import Qt3D.Core 2.0 -NodeInstantiator { - model: ["alpha", "beta", "gamma", "delta"] - delegate: Entity { - property bool success: index == 1 ? datum.length == 4 : datum.length == 5 - property string datum: modelData +Entity { + NodeInstantiator { + model: ["alpha", "beta", "gamma", "delta"] + delegate: Entity { + property bool success: index == 1 ? datum.length == 4 : datum.length == 5 + property string datum: modelData + } } } diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp b/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp index fd7f0eb0c..acaba6690 100644 --- a/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp +++ b/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp @@ -60,7 +60,9 @@ void tst_quick3dnodeinstantiator::createNone() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("createNone.qml")); - Quick3DNodeInstantiator *instantiator = qobject_cast<Quick3DNodeInstantiator*>(component.create()); + const auto root = qobject_cast<Qt3DCore::QNode*>(component.create()); + QVERIFY(root != 0); + const auto instantiator = root->findChild<Quick3DNodeInstantiator*>(); QVERIFY(instantiator != 0); QCOMPARE(instantiator->isActive(), true); QCOMPARE(instantiator->count(), 0); @@ -72,7 +74,9 @@ void tst_quick3dnodeinstantiator::createSingle() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("createSingle.qml")); - Quick3DNodeInstantiator *instantiator = qobject_cast<Quick3DNodeInstantiator*>(component.create()); + const auto root = qobject_cast<Qt3DCore::QNode*>(component.create()); + QVERIFY(root != 0); + const auto instantiator = root->findChild<Quick3DNodeInstantiator*>(); QVERIFY(instantiator != 0); QCOMPARE(instantiator->isActive(), true); QCOMPARE(instantiator->count(), 1); @@ -80,7 +84,7 @@ void tst_quick3dnodeinstantiator::createSingle() QObject *object = instantiator->object(); QVERIFY(object); - QCOMPARE(object->parent(), instantiator); + QCOMPARE(object->parent(), root); QCOMPARE(object->property("success").toBool(), true); QCOMPARE(object->property("idx").toInt(), 0); } @@ -89,7 +93,9 @@ void tst_quick3dnodeinstantiator::createMultiple() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("createMultiple.qml")); - Quick3DNodeInstantiator *instantiator = qobject_cast<Quick3DNodeInstantiator*>(component.create()); + const auto root = qobject_cast<Qt3DCore::QNode*>(component.create()); + QVERIFY(root != 0); + const auto instantiator = root->findChild<Quick3DNodeInstantiator*>(); QVERIFY(instantiator != 0); QCOMPARE(instantiator->isActive(), true); QCOMPARE(instantiator->count(), 10); @@ -97,7 +103,7 @@ void tst_quick3dnodeinstantiator::createMultiple() for (int i = 0; i < 10; i++) { QObject *object = instantiator->objectAt(i); QVERIFY(object); - QCOMPARE(object->parent(), instantiator); + QCOMPARE(object->parent(), root); QCOMPARE(object->property("success").toBool(), true); QCOMPARE(object->property("idx").toInt(), i); } @@ -107,7 +113,9 @@ void tst_quick3dnodeinstantiator::stringModel() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("stringModel.qml")); - Quick3DNodeInstantiator *instantiator = qobject_cast<Quick3DNodeInstantiator*>(component.create()); + const auto root = qobject_cast<Qt3DCore::QNode*>(component.create()); + QVERIFY(root != 0); + const auto instantiator = root->findChild<Quick3DNodeInstantiator*>(); QVERIFY(instantiator != 0); QCOMPARE(instantiator->isActive(), true); QCOMPARE(instantiator->count(), 4); @@ -115,7 +123,7 @@ void tst_quick3dnodeinstantiator::stringModel() for (int i = 0; i < 4; i++) { QObject *object = instantiator->objectAt(i); QVERIFY(object); - QCOMPARE(object->parent(), instantiator); + QCOMPARE(object->parent(), root); QCOMPARE(object->property("success").toBool(), true); } } @@ -124,7 +132,9 @@ void tst_quick3dnodeinstantiator::activeProperty() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("inactive.qml")); - Quick3DNodeInstantiator *instantiator = qobject_cast<Quick3DNodeInstantiator*>(component.create()); + const auto root = qobject_cast<Qt3DCore::QNode*>(component.create()); + QVERIFY(root != 0); + const auto instantiator = root->findChild<Quick3DNodeInstantiator*>(); QVERIFY(instantiator != 0); QSignalSpy activeSpy(instantiator, SIGNAL(activeChanged())); QSignalSpy countSpy(instantiator, SIGNAL(countChanged())); @@ -150,7 +160,7 @@ void tst_quick3dnodeinstantiator::activeProperty() QObject *object = instantiator->object(); QVERIFY(object); - QCOMPARE(object->parent(), instantiator); + QCOMPARE(object->parent(), root); QCOMPARE(object->property("success").toBool(), true); QCOMPARE(object->property("idx").toInt(), 0); } @@ -159,7 +169,9 @@ void tst_quick3dnodeinstantiator::intModelChange() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("createMultiple.qml")); - Quick3DNodeInstantiator *instantiator = qobject_cast<Quick3DNodeInstantiator*>(component.create()); + const auto root = qobject_cast<Qt3DCore::QNode*>(component.create()); + QVERIFY(root != 0); + const auto instantiator = root->findChild<Quick3DNodeInstantiator*>(); QVERIFY(instantiator != 0); QSignalSpy activeSpy(instantiator, SIGNAL(activeChanged())); QSignalSpy countSpy(instantiator, SIGNAL(countChanged())); @@ -183,7 +195,7 @@ void tst_quick3dnodeinstantiator::intModelChange() for (int i = 0; i < 2; i++) { QObject *object = instantiator->objectAt(i); QVERIFY(object); - QCOMPARE(object->parent(), instantiator); + QCOMPARE(object->parent(), root); QCOMPARE(object->property("success").toBool(), true); QCOMPARE(object->property("idx").toInt(), i); } |