diff options
author | Chen Bin <chenbin@uniontech.com> | 2021-04-02 13:40:08 +0800 |
---|---|---|
committer | Chen Bin <chenbin@uniontech.com> | 2021-05-11 20:35:30 +0800 |
commit | aeef92c3c33e4ebcb7e5d8dd955020f4f4600e84 (patch) | |
tree | 4fc20df61dbd97a91cad0f37f7a9eb47c3618c6b /src | |
parent | 2be9e6cc2677df7fe842c1a5980d6e0ffcf98fc9 (diff) |
Check scrollbar visibility when computing QListView margins
When the listview setWordWrap is true and ScrollBarPolicy is
ScrollBarAsNeeded, if the text needs a newline display and the
vbar is not shown, the width of the item was subtracted from
the width of the scrollbar.
In most cases, the listview needs to reserve the size of the scrollbar.
But if the flow is TopToBottom and the vertical scrollbar is not
visible, the width of the vertical scrollbar cannot be reserved.
Fixes: QTBUG-92366
Pick-to: 5.15 6.0 6.1
Change-Id: I73cce691099a253d409019dbb3fe9a16e1830bb1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 205203730d..8ee69cbe2c 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -1797,7 +1797,7 @@ void QListViewPrivate::prepareItemsLayout() // maximumViewportSize() already takes scrollbar into account if policy is // Qt::ScrollBarAlwaysOn but scrollbar extent must be deduced if policy // is Qt::ScrollBarAsNeeded - int verticalMargin = vbarpolicy==Qt::ScrollBarAsNeeded + int verticalMargin = (vbarpolicy == Qt::ScrollBarAsNeeded) && (flow == QListView::LeftToRight || vbar->isVisible()) ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, nullptr, vbar) + frameAroundContents : 0; int horizontalMargin = hbarpolicy==Qt::ScrollBarAsNeeded |