summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-01-30 19:55:37 +0100
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2018-02-03 10:01:41 +0000
commit1aa3edf3f888f394040d32d4a211257f9e9e2791 (patch)
tree676abf1b41f6ce1bb3215efc5c3acb4f765fc9e6 /src/widgets/itemviews
parentdaabb8f63d2ed83d41037138edeeaf648c3f39d4 (diff)
QListView: Honor css :first/:middle/:last Pseudo-States
Properly set QStyleOptionViewItem::viewItemPosition to honor the css Pseudo-States. Task-number: QTBUG-27110 Change-Id: I9b9bb4913210feb665fd9d00a71dc4a953a93606 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r--src/widgets/itemviews/qlistview.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp
index 7f027595b7..6777b09043 100644
--- a/src/widgets/itemviews/qlistview.cpp
+++ b/src/widgets/itemviews/qlistview.cpp
@@ -980,9 +980,18 @@ void QListView::paintEvent(QPaintEvent *e)
? qMax(viewport()->size().width(), d->contentsSize().width()) - 2 * d->spacing()
: qMax(viewport()->size().height(), d->contentsSize().height()) - 2 * d->spacing();
+ const int rowCount = d->commonListView->rowCount();
QVector<QModelIndex>::const_iterator end = toBeRendered.constEnd();
for (QVector<QModelIndex>::const_iterator it = toBeRendered.constBegin(); it != end; ++it) {
Q_ASSERT((*it).isValid());
+ if (rowCount == 1)
+ option.viewItemPosition = QStyleOptionViewItem::OnlyOne;
+ else if ((*it).row() == 0)
+ option.viewItemPosition = QStyleOptionViewItem::Beginning;
+ else if ((*it).row() == rowCount - 1)
+ option.viewItemPosition = QStyleOptionViewItem::End;
+ else
+ option.viewItemPosition = QStyleOptionViewItem::Middle;
option.rect = visualRect(*it);
if (flow() == TopToBottom)