aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2012-02-01 16:48:03 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-02 04:56:27 +0100
commit67ebd7014134df8c7981b815a99cd9d749e167db (patch)
tree75af05e865545cbf5611779143853d089184aa09 /tests/auto
parentc1e668a96764d1a252322ebae3af72097c27dfe1 (diff)
Must update columns when GridView geometry changes
Regression from changes in 80d85e0017cb5cc4b0a0df6c19d4126bf5062731 Also remove shared duplicate code in visibleItemsChanged() in ListView and GridView. Change-Id: Ic3ab3ba070ddf9901a232ed5b3250c725797cf69 Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/qtquick2/qquickgridview/data/resizeview.qml5
-rw-r--r--tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp60
2 files changed, 63 insertions, 2 deletions
diff --git a/tests/auto/qtquick2/qquickgridview/data/resizeview.qml b/tests/auto/qtquick2/qquickgridview/data/resizeview.qml
index 1f730a4a8a..130a0defc1 100644
--- a/tests/auto/qtquick2/qquickgridview/data/resizeview.qml
+++ b/tests/auto/qtquick2/qquickgridview/data/resizeview.qml
@@ -3,12 +3,13 @@ import QtQuick 2.0
Rectangle {
id: root
- property real initialHeight
+ width: 240
+ height: 320
GridView {
id: grid
objectName: "grid"
- width: 240
+ width: initialWidth
height: initialHeight
cellWidth: 80
cellHeight: 60
diff --git a/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp b/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp
index 303f4bd7b7..fb2b6b46f9 100644
--- a/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp
+++ b/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp
@@ -105,6 +105,7 @@ private slots:
void header();
void header_data();
void resizeViewAndRepaint();
+ void changeColumnCount();
void indexAt_itemAt_data();
void indexAt_itemAt();
void onAdd();
@@ -3185,6 +3186,7 @@ void tst_QQuickGridView::resizeViewAndRepaint()
QDeclarativeContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("initialWidth", 240);
ctxt->setContextProperty("initialHeight", 100);
canvas->setSource(testFileUrl("resizeview.qml"));
@@ -3247,6 +3249,64 @@ void tst_QQuickGridView::resizeViewAndRepaint()
delete canvas;
}
+void tst_QQuickGridView::changeColumnCount()
+{
+ TestModel model;
+ for (int i = 0; i < 40; i++)
+ model.addItem("Item" + QString::number(i), "");
+
+ QQuickView *canvas = createView();
+ QDeclarativeContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("initialWidth", 100);
+ ctxt->setContextProperty("initialHeight", 320);
+ canvas->setSource(testFileUrl("resizeview.qml"));
+ canvas->show();
+ qApp->processEvents();
+
+ QQuickGridView *gridview = findItem<QQuickGridView>(canvas->rootObject(), "grid");
+ QTRY_VERIFY(gridview != 0);
+ QQuickItem *contentItem = gridview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+ QTRY_COMPARE(QQuickItemPrivate::get(gridview)->polishScheduled, false);
+
+ // a single column of 6 items are visible
+ int itemCount = findItems<QQuickItem>(contentItem, "wrapper").count();
+ QCOMPARE(itemCount, 6);
+ for (int i = 0; i < model.count() && i < itemCount; ++i) {
+ QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i);
+ QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i)));
+ QCOMPARE(item->x(), 0.0);
+ QCOMPARE(item->y(), qreal(i*60));
+ }
+
+ // now 6x3 grid is visible, plus 1 extra below for refill
+ gridview->setWidth(240);
+ QTRY_COMPARE(QQuickItemPrivate::get(gridview)->polishScheduled, false);
+ itemCount = findItems<QQuickItem>(contentItem, "wrapper").count();
+ QCOMPARE(itemCount, 6*3 + 1);
+ for (int i = 0; i < model.count() && i < itemCount; ++i) {
+ QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i);
+ QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i)));
+ QCOMPARE(item->x(), qreal((i%3)*80));
+ QCOMPARE(item->y(), qreal((i/3)*60));
+ }
+
+ // back to single column
+ gridview->setWidth(100);
+ QTRY_COMPARE(QQuickItemPrivate::get(gridview)->polishScheduled, false);
+ itemCount = findItems<QQuickItem>(contentItem, "wrapper").count();
+ QCOMPARE(itemCount, 6);
+ for (int i = 0; i < model.count() && i < itemCount; ++i) {
+ QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i);
+ QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i)));
+ QCOMPARE(item->x(), 0.0);
+ QCOMPARE(item->y(), qreal(i*60));
+ }
+
+ delete canvas;
+}
+
void tst_QQuickGridView::indexAt_itemAt_data()
{
QTest::addColumn<qreal>("x");