diff options
author | Jonas Karlsson <jonas.karlsson@qt.io> | 2023-11-08 12:53:50 +0100 |
---|---|---|
committer | Jonas Karlsson <jonas.karlsson@qt.io> | 2023-11-08 18:24:17 +0100 |
commit | a8df174369cecd90f14dac85bf162353b7cb25d1 (patch) | |
tree | 55fc47c9c49e8eb1408df32576dae82f21cbff4d /src/widgets/itemviews/qheaderview.cpp | |
parent | 7e8ae9cf12611439462e8b26946473fd6492afcc (diff) |
QHeaderView: relayout on resetDefaultSectionSize
We now call setDefaultSectionSize with the new default section size.
This clamps the value to min/max section size and it will resize
affected sections.
Pick-to: 6.5 6.6
Fixes: QTBUG-116013
Change-Id: I39849aca8d0672629ce0b3ca244038c27e045d4b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/itemviews/qheaderview.cpp')
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index d60fd44b8d..d43341adde 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -1529,13 +1529,14 @@ void QHeaderView::setDefaultSectionSize(int size) if (size < 0 || size > maxSizeSection) return; d->setDefaultSectionSize(size); + d->customDefaultSectionSize = true; } void QHeaderView::resetDefaultSectionSize() { Q_D(QHeaderView); if (d->customDefaultSectionSize) { - d->updateDefaultSectionSizeFromStyle(); + d->setDefaultSectionSize(d->getDefaultSectionSizeFromStyle()); d->customDefaultSectionSize = false; } } @@ -2387,7 +2388,7 @@ bool QHeaderView::event(QEvent *e) break; } case QEvent::StyleChange: if (!d->customDefaultSectionSize) - d->updateDefaultSectionSizeFromStyle(); + d->setDefaultSectionSize(d->getDefaultSectionSizeFromStyle()); break; default: break; @@ -3854,7 +3855,6 @@ void QHeaderViewPrivate::setDefaultSectionSize(int size) executePostedLayout(); invalidateCachedSizeHint(); defaultSectionSize = size; - customDefaultSectionSize = true; if (state == QHeaderViewPrivate::ResizeSection) preventCursorChangeInSetOffset = true; for (int i = 0; i < sectionItems.size(); ++i) { @@ -3875,15 +3875,14 @@ void QHeaderViewPrivate::setDefaultSectionSize(int size) viewport->update(); } -void QHeaderViewPrivate::updateDefaultSectionSizeFromStyle() +int QHeaderViewPrivate::getDefaultSectionSizeFromStyle() const { - Q_Q(QHeaderView); - if (orientation == Qt::Horizontal) { - defaultSectionSize = q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeHorizontal, nullptr, q); - } else { - defaultSectionSize = qMax(q->minimumSectionSize(), - q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeVertical, nullptr, q)); - } + Q_Q(const QHeaderView); + return orientation == Qt::Horizontal + ? q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeHorizontal, nullptr, q) + : qMax(q->minimumSectionSize(), + q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeVertical, nullptr, + q)); } void QHeaderViewPrivate::recalcSectionStartPos() const // linear (but fast) @@ -4192,7 +4191,7 @@ bool QHeaderViewPrivate::read(QDataStream &in) if (in.status() == QDataStream::Ok) { // we haven't read past end customDefaultSectionSize = tmpbool; if (!customDefaultSectionSize) - updateDefaultSectionSizeFromStyle(); + defaultSectionSize = getDefaultSectionSizeFromStyle(); } lastSectionSize = -1; |