summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Bugge Monsen <mmonsen@trolltech.com>2009-06-10 14:43:21 +0200
committerMarius Bugge Monsen <mmonsen@trolltech.com>2009-06-10 14:43:21 +0200
commitdf1b73b21d1e90e1c37705b44747ee671220bc22 (patch)
tree0de95deec582076bf5acae3c24ed1daa0b2293e6
parent541891f3bc60833e0c7aefa5b1f21b60cabc8495 (diff)
Make sure QtGraphicsListView::maximumOffset() only returns positive values. Auto-test included.
-rw-r--r--src/qgraphicslistview.cpp4
-rw-r--r--tests/qgraphicslistview/tst_qgraphicslistview.cpp80
2 files changed, 82 insertions, 2 deletions
diff --git a/src/qgraphicslistview.cpp b/src/qgraphicslistview.cpp
index a2f1546..0de92b7 100644
--- a/src/qgraphicslistview.cpp
+++ b/src/qgraphicslistview.cpp
@@ -895,7 +895,7 @@ qreal QtGraphicsListView::maximumOffset() const
content += size.height();
max = qMax(max, size.height());
}
- return content - size().height();
+ return qMax<qreal>(content - size().height(), 0);
} else { // Horizontal
for (int index = 0; index < count; ++index) {
initStyleOption(&option, index);
@@ -903,7 +903,7 @@ qreal QtGraphicsListView::maximumOffset() const
content += size.width();
max = qMax(max, size.width());
}
- return content - size().width();
+ return qMax<qreal>(content - size().width(), 0);
}
}
diff --git a/tests/qgraphicslistview/tst_qgraphicslistview.cpp b/tests/qgraphicslistview/tst_qgraphicslistview.cpp
index 4fa76aa..2b0e339 100644
--- a/tests/qgraphicslistview/tst_qgraphicslistview.cpp
+++ b/tests/qgraphicslistview/tst_qgraphicslistview.cpp
@@ -157,10 +157,90 @@ void tst_QtGraphicsListView::getSetCheck()
void tst_QtGraphicsListView::maximumOffset_data()
{
+ QTest::addColumn<int>("count");
+ QTest::addColumn<int>("orientation");
+ QTest::addColumn<QSizeF>("size");
+ QTest::addColumn<qreal>("maximumOffset");
+
+ QTest::newRow("no items, vertical, all visible")
+ << 0
+ << int(Qt::Vertical)
+ << QSizeF(100, 100)
+ << 0.;
+
+ QTest::newRow("one item, vertical, all visible")
+ << 5
+ << int(Qt::Vertical)
+ << QSizeF(100, 100)
+ << 0.;
+
+ QTest::newRow("five items, vertical, all visible")
+ << 5
+ << int(Qt::Vertical)
+ << QSizeF(100, 100)
+ << 0.;
+
+ QTest::newRow("six items, vertical")
+ << 6
+ << int(Qt::Vertical)
+ << QSizeF(100, 100)
+ << 20.;
+
+ QTest::newRow("ten items, vertical")
+ << 10
+ << int(Qt::Vertical)
+ << QSizeF(100, 100)
+ << 100.;
+
+ QTest::newRow("no items, horizontal, all visible")
+ << 0
+ << int(Qt::Horizontal)
+ << QSizeF(100, 100)
+ << 0.;
+
+ QTest::newRow("one item, horizontal, all visible")
+ << 5
+ << int(Qt::Horizontal)
+ << QSizeF(100, 100)
+ << 0.;
+
+ QTest::newRow("five items, horizontal, all visible")
+ << 5
+ << int(Qt::Horizontal)
+ << QSizeF(100, 100)
+ << 0.;
+
+ QTest::newRow("six items, horizontal")
+ << 6
+ << int(Qt::Horizontal)
+ << QSizeF(100, 100)
+ << 20.;
+
+ QTest::newRow("ten items, horizontal")
+ << 10
+ << int(Qt::Horizontal)
+ << QSizeF(100, 100)
+ << 100.;
}
void tst_QtGraphicsListView::maximumOffset()
{
+ QFETCH(int, count);
+ QFETCH(int, orientation);
+ QFETCH(QSizeF, size);
+ QFETCH(qreal, maximumOffset);
+
+ QtListDefaultModel model;
+ for (int i = 0; i < count; ++i)
+ model.insertItem(i, new QtListDefaultItem());
+
+ view->setOrientation(static_cast<Qt::Orientation>(orientation));
+ view->setGeometry(QRectF(QPointF(0, 0), size));
+ view->setItemCreator(new QtGraphicsListViewItemCreator<GraphicsListViewItem>());
+ view->setModel(&model);
+ view->doLayout();
+
+ QCOMPARE(view->maximumOffset(), maximumOffset);
}
void tst_QtGraphicsListView::maximumFirstIndex_data()