diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qquicklistview/data/qtbug50097.qml | 47 | ||||
-rw-r--r-- | tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | 37 |
2 files changed, 74 insertions, 10 deletions
diff --git a/tests/auto/quick/qquicklistview/data/qtbug50097.qml b/tests/auto/quick/qquicklistview/data/qtbug50097.qml new file mode 100644 index 0000000000..24d506b804 --- /dev/null +++ b/tests/auto/quick/qquicklistview/data/qtbug50097.qml @@ -0,0 +1,47 @@ +import QtQuick 2.6 + +ListView { + id: lv + + // How many rows per page + property int pageSize: 5 + + // The current page number + property int currentPage: 1 + + // How large a single item is + property int itemSize: 100 + + // Arbitrary + property int totalPages: 5 + + height: itemSize * pageSize // display one full page at a time + width: 500 // arbitrary. + model: pageSize * totalPages + delegate: Text { + height: itemSize + text: "Item " + (index + 1) + " of " + lv.count + } + + // contentY should be < 0 to account for header visibility + onContentYChanged: console.log(contentY) + + headerPositioning: ListView.OverlayHeader + header: Rectangle { + height: itemSize + width: 500 + z: 1000 + visible: false + color: "black" + + Text { + anchors.centerIn: parent + color: "red" + text: "List header" + } + } + + onCurrentPageChanged: { + lv.positionViewAtIndex((currentPage - 1) * pageSize, ListView.Beginning); + } +} diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index 1fec04d08a..5108abcb12 100644 --- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp @@ -253,6 +253,7 @@ private slots: void QTBUG_48870_fastModelUpdates(); void QTBUG_50105(); + void QTBUG_50097_stickyHeader_positionViewAtIndex(); private: template <class T> void items(const QUrl &source); @@ -7550,7 +7551,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("top header") << "stickyPositioning-header.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::TopToBottom << 0 << QQuickItemView::Beginning << QList<QPointF>() - << QPointF(0,-10) << QPointF(); + << QPointF(0,0) << QPointF(); QTest::newRow("top header: 1/2 up") << "stickyPositioning-header.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::TopToBottom @@ -7577,7 +7578,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("top footer") << "stickyPositioning-footer.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::BottomToTop << 19 << QQuickItemView::End << QList<QPointF>() - << QPointF() << QPointF(0,-10); + << QPointF() << QPointF(0,0); QTest::newRow("top footer: 1/2 up") << "stickyPositioning-footer.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::BottomToTop @@ -7604,7 +7605,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("bottom header") << "stickyPositioning-header.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::BottomToTop << 0 << QQuickItemView::Beginning << QList<QPointF>() - << QPointF(0,100) << QPointF(); + << QPointF(0,90) << QPointF(); QTest::newRow("bottom header: 1/2 down") << "stickyPositioning-header.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::BottomToTop @@ -7631,7 +7632,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("bottom footer") << "stickyPositioning-footer.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::TopToBottom << 19 << QQuickItemView::End << QList<QPointF>() - << QPointF() << QPointF(0,100); + << QPointF() << QPointF(0,90); QTest::newRow("bottom footer: 1/2 down") << "stickyPositioning-footer.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::TopToBottom @@ -7658,7 +7659,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("top header & bottom footer") << "stickyPositioning-both.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::TopToBottom << 0 << QQuickItemView::Beginning << QList<QPointF>() - << QPointF(0,-10) << QPointF(0,90); + << QPointF(0,0) << QPointF(0,100); QTest::newRow("top header & bottom footer: 1/2 up") << "stickyPositioning-both.qml" << Qt::Vertical << Qt::LeftToRight << QQuickListView::TopToBottom @@ -7711,7 +7712,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("left header") << "stickyPositioning-header.qml" << Qt::Horizontal << Qt::LeftToRight << QQuickListView::TopToBottom << 0 << QQuickItemView::Beginning << QList<QPointF>() - << QPointF(-10,0) << QPointF(); + << QPointF(0,0) << QPointF(); QTest::newRow("left header: 1/2 left") << "stickyPositioning-header.qml" << Qt::Horizontal << Qt::LeftToRight << QQuickListView::TopToBottom @@ -7738,7 +7739,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("left footer") << "stickyPositioning-footer.qml" << Qt::Horizontal << Qt::RightToLeft << QQuickListView::TopToBottom << 19 << QQuickItemView::End << QList<QPointF>() - << QPointF() << QPointF(-10,0); + << QPointF() << QPointF(0,0); QTest::newRow("left footer: 1/2 left") << "stickyPositioning-footer.qml" << Qt::Horizontal << Qt::RightToLeft << QQuickListView::TopToBottom @@ -7765,7 +7766,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("right header") << "stickyPositioning-header.qml" << Qt::Horizontal << Qt::RightToLeft << QQuickListView::TopToBottom << 0 << QQuickItemView::Beginning << QList<QPointF>() - << QPointF(100,0) << QPointF(); + << QPointF(90,0) << QPointF(); QTest::newRow("right header: 1/2 right") << "stickyPositioning-header.qml" << Qt::Horizontal << Qt::RightToLeft << QQuickListView::TopToBottom @@ -7792,7 +7793,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("right footer") << "stickyPositioning-footer.qml" << Qt::Horizontal << Qt::LeftToRight << QQuickListView::TopToBottom << 19 << QQuickItemView::End << QList<QPointF>() - << QPointF() << QPointF(100,0); + << QPointF() << QPointF(90,0); QTest::newRow("right footer: 1/2 right") << "stickyPositioning-footer.qml" << Qt::Horizontal << Qt::LeftToRight << QQuickListView::TopToBottom @@ -7819,7 +7820,7 @@ void tst_QQuickListView::stickyPositioning_data() QTest::newRow("left header & right footer") << "stickyPositioning-both.qml" << Qt::Horizontal << Qt::LeftToRight << QQuickListView::TopToBottom << 0 << QQuickItemView::Beginning << QList<QPointF>() - << QPointF(-10,0) << QPointF(90,0); + << QPointF(0,0) << QPointF(100,0); QTest::newRow("left header & right footer: 1/2 left") << "stickyPositioning-both.qml" << Qt::Horizontal << Qt::LeftToRight << QQuickListView::TopToBottom @@ -8451,6 +8452,22 @@ void tst_QQuickListView::QTBUG_50105() QVERIFY(QTest::qWaitForWindowExposed(window.data())); } +void tst_QQuickListView::QTBUG_50097_stickyHeader_positionViewAtIndex() +{ + QQuickView *window = createView(); + window->setSource(testFileUrl("qtbug50097.qml")); + window->show(); + QVERIFY(QTest::qWaitForWindowExposed(window)); + + QQuickListView *listview = qobject_cast<QQuickListView*>(window->rootObject()); + QVERIFY(listview != 0); + QTRY_COMPARE(listview->contentY(), -100.0); // the header size, since the header is overlaid + listview->setProperty("currentPage", 2); + QTRY_COMPARE(listview->contentY(), 400.0); // a full page of items down, sans the original negative header position + listview->setProperty("currentPage", 1); + QTRY_COMPARE(listview->contentY(), -100.0); // back to the same position: header visible, items not under the header. +} + QTEST_MAIN(tst_QQuickListView) #include "tst_qquicklistview.moc" |