From 8282beb53de059237a4240ad9615d77f676c20fb Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 5 Sep 2011 10:59:28 +1000 Subject: Fix min extents to correctly consider header size Regression from c0fc795f which changed implementation to always position header at a negative position, and not just when visibleItems is empty. Task-number: QTBUG-21207 Change-Id: I9a888e7e30b00f70835734b1e0e75e57ed282602 Reviewed-on: http://codereview.qt.nokia.com/4159 Reviewed-by: Qt Sanity Bot Reviewed-by: Martin Jones --- tests/auto/declarative/qsggridview/data/header.qml | 4 +- .../declarative/qsggridview/tst_qsggridview.cpp | 31 +++++++++++++--- tests/auto/declarative/qsglistview/data/header.qml | 4 +- .../declarative/qsglistview/tst_qsglistview.cpp | 43 ++++++++++++++++------ 4 files changed, 60 insertions(+), 22 deletions(-) (limited to 'tests') diff --git a/tests/auto/declarative/qsggridview/data/header.qml b/tests/auto/declarative/qsggridview/data/header.qml index 5978317a76..648e2a2298 100644 --- a/tests/auto/declarative/qsggridview/data/header.qml +++ b/tests/auto/declarative/qsggridview/data/header.qml @@ -24,8 +24,8 @@ Rectangle { GridView { id: grid objectName: "grid" - width: 240 - height: 320 + width: initialViewWidth + height: initialViewHeight cellWidth: 80 cellHeight: 60 model: testModel diff --git a/tests/auto/declarative/qsggridview/tst_qsggridview.cpp b/tests/auto/declarative/qsggridview/tst_qsggridview.cpp index f29eb33383..1200129e0b 100644 --- a/tests/auto/declarative/qsggridview/tst_qsggridview.cpp +++ b/tests/auto/declarative/qsggridview/tst_qsggridview.cpp @@ -2459,17 +2459,15 @@ void tst_QSGGridView::header() QFETCH(QPointF, firstDelegatePos); QFETCH(QPointF, resizeContentPos); - QSGView *canvas = createView(); - TestModel model; for (int i = 0; i < 30; i++) model.addItem("Item" + QString::number(i), ""); - QDeclarativeContext *ctxt = canvas->rootContext(); - ctxt->setContextProperty("testModel", &model); - + QSGView *canvas = createView(); + canvas->rootContext()->setContextProperty("testModel", &model); + canvas->rootContext()->setContextProperty("initialViewWidth", 240); + canvas->rootContext()->setContextProperty("initialViewHeight", 320); canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml")); - qApp->processEvents(); QSGGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); @@ -2525,6 +2523,27 @@ void tst_QSGGridView::header() QTRY_COMPARE(QPointF(gridview->contentX(), gridview->contentY()), resizeContentPos); delete canvas; + + + // QTBUG-21207 header should become visible if view resizes from initial empty size + + canvas = createView(); + canvas->rootContext()->setContextProperty("testModel", &model); + canvas->rootContext()->setContextProperty("initialViewWidth", 240); + canvas->rootContext()->setContextProperty("initialViewHeight", 320); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml")); + + gridview = findItem(canvas->rootObject(), "grid"); + QTRY_VERIFY(gridview != 0); + gridview->setFlow(flow); + gridview->setLayoutDirection(layoutDirection); + + gridview->setWidth(240); + gridview->setHeight(320); + QTRY_COMPARE(gridview->headerItem()->pos(), initialHeaderPos); + QCOMPARE(QPointF(gridview->contentX(), gridview->contentY()), initialContentPos); + + delete canvas; } void tst_QSGGridView::header_data() diff --git a/tests/auto/declarative/qsglistview/data/header.qml b/tests/auto/declarative/qsglistview/data/header.qml index b073146582..bf70310630 100644 --- a/tests/auto/declarative/qsglistview/data/header.qml +++ b/tests/auto/declarative/qsglistview/data/header.qml @@ -24,8 +24,8 @@ Rectangle { id: list objectName: "list" focus: true - width: 240 - height: 320 + width: initialViewWidth + height: initialViewHeight snapMode: ListView.SnapToItem model: testModel delegate: myDelegate diff --git a/tests/auto/declarative/qsglistview/tst_qsglistview.cpp b/tests/auto/declarative/qsglistview/tst_qsglistview.cpp index ecbb9b87cb..76e93034dd 100644 --- a/tests/auto/declarative/qsglistview/tst_qsglistview.cpp +++ b/tests/auto/declarative/qsglistview/tst_qsglistview.cpp @@ -2463,17 +2463,15 @@ void tst_QSGListView::header() QFETCH(QPointF, changedContentPos); QFETCH(QPointF, resizeContentPos); - QSGView *canvas = createView(); - TestModel model; for (int i = 0; i < 30; i++) model.addItem("Item" + QString::number(i), ""); - QDeclarativeContext *ctxt = canvas->rootContext(); - ctxt->setContextProperty("testModel", &model); - + QSGView *canvas = createView(); + canvas->rootContext()->setContextProperty("testModel", &model); + canvas->rootContext()->setContextProperty("initialViewWidth", 240); + canvas->rootContext()->setContextProperty("initialViewHeight", 320); canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml")); - qApp->processEvents(); QSGListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); @@ -2521,6 +2519,27 @@ void tst_QSGListView::header() QTRY_COMPARE(QPointF(listview->contentX(), listview->contentY()), changedContentPos); QCOMPARE(item->pos(), firstDelegatePos); + delete canvas; + + + // QTBUG-21207 header should become visible if view resizes from initial empty size + + canvas = createView(); + canvas->rootContext()->setContextProperty("testModel", &model); + canvas->rootContext()->setContextProperty("initialViewWidth", 0.0); + canvas->rootContext()->setContextProperty("initialViewHeight", 0.0); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml")); + + listview = findItem(canvas->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + listview->setOrientation(orientation); + listview->setLayoutDirection(layoutDirection); + + listview->setWidth(240); + listview->setHeight(320); + QTRY_COMPARE(listview->headerItem()->pos(), initialHeaderPos); + QCOMPARE(QPointF(listview->contentX(), listview->contentY()), initialContentPos); + header->setHeight(10); header->setWidth(40); QTRY_COMPARE(QPointF(listview->contentX(), listview->contentY()), resizeContentPos); @@ -2800,8 +2819,8 @@ void tst_QSGListView::headerFooter() QVERIFY(footer); QCOMPARE(footer->y(), 0.); - QVERIFY(static_cast(listview)->minY() == 0); - QVERIFY(static_cast(listview)->maxY() == 0); + QCOMPARE(static_cast(listview)->minY(), header->height()); + QCOMPARE(static_cast(listview)->maxY(), header->height()); delete canvas; } @@ -2831,8 +2850,8 @@ void tst_QSGListView::headerFooter() QVERIFY(footer); QCOMPARE(footer->x(), 0.); - QVERIFY(static_cast(listview)->minX() == 0); - QVERIFY(static_cast(listview)->maxX() == 0); + QCOMPARE(static_cast(listview)->minX(), header->width()); + QCOMPARE(static_cast(listview)->maxX(), header->width()); delete canvas; } @@ -2863,8 +2882,8 @@ void tst_QSGListView::headerFooter() QVERIFY(footer); QCOMPARE(footer->x(), -footer->width()); - QCOMPARE(static_cast(listview)->minX(), 240.); - QCOMPARE(static_cast(listview)->maxX(), 240.); + QCOMPARE(static_cast(listview)->minX(), 240. - header->width()); + QCOMPARE(static_cast(listview)->maxX(), 240. - header->width()); delete canvas; } -- cgit v1.2.3