aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickitem/tst_qquickitem.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-05-09 16:25:58 +0200
committerGunnar Sletta <gunnar.sletta@jollamobile.com>2014-05-10 11:53:47 +0200
commit66646dd8c37adb488a79ab274b2396a649674e6d (patch)
treeb0f5ac752a52cec3de1d47692e09295197622dcd /tests/auto/quick/qquickitem/tst_qquickitem.cpp
parentda15ea0f3b5805db657f13060c21efa78f10cde2 (diff)
parentd82a17b929dd88fe76258b0f801beaa1b2ee343e (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: .qmake.conf src/plugins/accessible/quick/quick.pro src/quick/items/qquickpincharea.cpp src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp src/quick/scenegraph/qsgthreadedrenderloop.cpp Manually adjusted for TestHTTPServer constructor change: tests/auto/quick/qquickimage/tst_qquickimage.cpp Change-Id: I5e58a7c08ea92d6fc5e3bce98571c54f7b2ce08f
Diffstat (limited to 'tests/auto/quick/qquickitem/tst_qquickitem.cpp')
-rw-r--r--tests/auto/quick/qquickitem/tst_qquickitem.cpp63
1 files changed, 61 insertions, 2 deletions
diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
index 8db515432a..40327b0666 100644
--- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp
+++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
@@ -170,6 +170,7 @@ private slots:
void acceptedMouseButtons();
void visualParentOwnership();
+ void visualParentOwnershipWindow();
private:
@@ -1189,8 +1190,9 @@ static inline QByteArray msgItem(const QQuickItem *item)
void tst_qquickitem::mouseGrab()
{
-#if defined(Q_OS_WIN) && defined(QT_OPENGL_ES_2)
- QSKIP("Fails in the CI for ANGLE builds on Windows, QTBUG-32664");
+#ifdef Q_OS_WIN
+ if (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES)
+ QSKIP("Fails in the CI for ANGLE builds on Windows, QTBUG-32664");
#endif
QQuickWindow window;
window.setFramePosition(QPoint(100, 100));
@@ -1824,6 +1826,63 @@ void tst_qquickitem::visualParentOwnership()
}
}
+void tst_qquickitem::visualParentOwnershipWindow()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("visualParentOwnershipWindow.qml"));
+
+ QQuickWindow *window = qobject_cast<QQuickWindow*>(component.create());
+ QVERIFY(window);
+ QQuickItem *root = window->contentItem();
+
+ QVariant newObject;
+ {
+ QVERIFY(QMetaObject::invokeMethod(window, "createItemWithoutParent", Q_RETURN_ARG(QVariant, newObject)));
+ QPointer<QQuickItem> newItem = qvariant_cast<QQuickItem*>(newObject);
+ QVERIFY(!newItem.isNull());
+
+ QVERIFY(!newItem->parent());
+ QVERIFY(!newItem->parentItem());
+
+ newItem->setParentItem(root);
+
+ gc(engine);
+
+ QVERIFY(!newItem.isNull());
+ newItem->setParentItem(0);
+
+ gc(engine);
+ QVERIFY(newItem.isNull());
+ }
+ {
+ QVERIFY(QMetaObject::invokeMethod(window, "createItemWithoutParent", Q_RETURN_ARG(QVariant, newObject)));
+ QPointer<QQuickItem> firstItem = qvariant_cast<QQuickItem*>(newObject);
+ QVERIFY(!firstItem.isNull());
+
+ firstItem->setParentItem(root);
+
+ QVERIFY(QMetaObject::invokeMethod(window, "createItemWithoutParent", Q_RETURN_ARG(QVariant, newObject)));
+ QPointer<QQuickItem> secondItem = qvariant_cast<QQuickItem*>(newObject);
+ QVERIFY(!firstItem.isNull());
+
+ secondItem->setParentItem(firstItem);
+
+ gc(engine);
+
+ delete firstItem;
+
+ window->setProperty("keepAliveProperty", newObject);
+
+ gc(engine);
+ QVERIFY(!secondItem.isNull());
+
+ window->setProperty("keepAliveProperty", QVariant());
+
+ gc(engine);
+ QVERIFY(secondItem.isNull());
+ }
+}
+
QTEST_MAIN(tst_qquickitem)
#include "tst_qquickitem.moc"