aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2012-01-06 14:02:10 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-13 07:54:20 +0100
commitc194b012182c3ae495bb7a740f02a5a9f5b3c3b3 (patch)
tree47738d95edbb6873473738eb561e3a5b4ce6b931 /tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
parentd9ecb7345c23cff097ea1a83a829673e220b400f (diff)
Add tests for item polish bug on Mac
On Mac OS X, if a QQuickItem triggers a polish request from Component.onCompleted, its updatePolish() function is not called. The tst_qquickitem::polishOnCompleted() test demonstrates this. If a running animation is added to the polishOnCompleted.qml in the test, the test will pass. Task-number: QTBUG-23481, QTBUG-23480, QTBUG-21590 Change-Id: I172b12e784aa458c43c23e0ee43f034f0bd332ee Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp')
-rw-r--r--tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp b/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
index e38dcf457f..7e32816599 100644
--- a/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
+++ b/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
@@ -73,9 +73,9 @@ class TestPolishItem : public QQuickItem
{
Q_OBJECT
public:
- TestPolishItem(QQuickItem *parent)
+ TestPolishItem(QQuickItem *parent = 0)
: QQuickItem(parent), wasPolished(false) {
- QTimer::singleShot(10, this, SLOT(doPolish()));
+
}
bool wasPolished;
@@ -109,6 +109,8 @@ class tst_qquickitem : public QDeclarativeDataTest
public:
private slots:
+ void initTestCase();
+
void noCanvas();
void simpleFocus();
void scopedFocus();
@@ -123,6 +125,7 @@ private slots:
void mouseGrab();
void polishOutsideAnimation();
+ void polishOnCompleted();
void wheelEvent_data();
void wheelEvent();
@@ -146,6 +149,12 @@ private:
}
};
+void tst_qquickitem::initTestCase()
+{
+ QDeclarativeDataTest::initTestCase();
+ qmlRegisterType<TestPolishItem>("Qt.test", 1, 0, "TestPolishItem");
+}
+
// Focus has no effect when outside a canvas
void tst_qquickitem::noCanvas()
{
@@ -862,12 +871,32 @@ void tst_qquickitem::polishOutsideAnimation()
TestPolishItem *item = new TestPolishItem(canvas->rootItem());
item->setSize(QSizeF(200, 100));
QTest::qWait(50);
+
+ QTimer::singleShot(10, item, SLOT(doPolish()));
QTRY_VERIFY(item->wasPolished);
delete item;
delete canvas;
}
+void tst_qquickitem::polishOnCompleted()
+{
+ QQuickView *view = new QQuickView;
+ view->setSource(testFileUrl("polishOnCompleted.qml"));
+ view->show();
+
+ TestPolishItem *item = qobject_cast<TestPolishItem*>(view->rootObject());
+ QVERIFY(item);
+
+#ifdef Q_OS_MAC
+ QSKIP("QTBUG-21590 view does not reliably receive polish without a running animation");
+#endif
+
+ QTRY_VERIFY(item->wasPolished);
+
+ delete view;
+}
+
void tst_qquickitem::wheelEvent_data()
{
QTest::addColumn<bool>("visible");