d->changeListeners.clear();
+ /*
+ Remove any references our transforms have to us, in case they try to
+ remove themselves from our list of transforms when that list has already
+ been destroyed after ~QQuickItem() has run.
+ */
+ for (int ii = 0; ii < d->transforms.count(); ++ii) {
+ QQuickTransform *t = d->transforms.at(ii);
+ QQuickTransformPrivate *tp = QQuickTransformPrivate::get(t);
+ tp->items.removeOne(this);
+ }
+
if (d->extra.isAllocated()) {
delete d->extra->contents; d->extra->contents = 0;
delete d->extra->layer; d->extra->layer = 0;
void testSGInitializeAndInvalidate();
+ void objectChildTransform();
+
private:
enum PaintOrderOp {
delete view.take();
QCOMPARE(invalidateSpy.size(), expected);
}
+}
+
+void tst_qquickitem::objectChildTransform()
+{
+ QQuickView view;
+ view.setSource(testFileUrl("objectChildTransform.qml"));
+
+ QQuickItem *root = qobject_cast<QQuickItem*>(view.rootObject());
+ QVERIFY(root);
+ root->setProperty("source", QString());
+ // Shouldn't crash.
}
QTEST_MAIN(tst_qquickitem)