Include horizontal scrollbar's size in sizehint

Amends 8c18a245b0245de20c064cd53d03498088bd57df

Pick-to: 6.7 6.5
Fixes: QTBUG-123886
Change-Id: I1ae2e29ce12610e10a8c0640458a3812a926c4cc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 0fa6660352df18134757a9c3f9dd329053e31cab)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Sami Varanka 2024-06-19 16:41:07 +03:00 committed by Qt Cherry-pick Bot
parent ada5f8b646
commit 6b2cbb3fd6
2 changed files with 13 additions and 1 deletions

View File

@ -1433,7 +1433,7 @@ QSize QAbstractScrollArea::sizeHint() const
const int f = 2 * d->frameWidth;
const QSize frame(f, f);
const bool vbarHidden = !d->vbar->isVisibleTo(this) || d->vbarpolicy == Qt::ScrollBarAlwaysOff;
const bool hbarHidden = !d->vbar->isVisibleTo(this) || d->hbarpolicy == Qt::ScrollBarAlwaysOff;
const bool hbarHidden = !d->hbar->isVisibleTo(this) || d->hbarpolicy == Qt::ScrollBarAlwaysOff;
const QSize scrollbars(vbarHidden ? 0 : d->vbar->sizeHint().width(),
hbarHidden ? 0 : d->hbar->sizeHint().height());
d->sizeHint = frame + scrollbars + viewportSizeHint();

View File

@ -431,6 +431,18 @@ void tst_QAbstractScrollArea::sizeHint()
QSize sizeHint = scrollArea.sizeHint();
QCOMPARE(sizeHint, scrollArea.viewportSizeHint());
// check if the hScrollbar is taken into account
scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QCOMPARE_GT(scrollArea.sizeHint().height(), scrollArea.viewportSizeHint().height());
// check if the vScrollbar is taken into account
scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
QCOMPARE_GT(scrollArea.sizeHint().width(), scrollArea.viewportSizeHint().width());
scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
const QSize sizeHintWithScrollBars = scrollArea.sizeHint();