diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-01-30 19:55:37 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2018-02-03 10:01:41 +0000 |
commit | 1aa3edf3f888f394040d32d4a211257f9e9e2791 (patch) | |
tree | 676abf1b41f6ce1bb3215efc5c3acb4f765fc9e6 /src/widgets | |
parent | daabb8f63d2ed83d41037138edeeaf648c3f39d4 (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')
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 9 |
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) |