summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews/qheaderview.cpp
diff options
context:
space:
mode:
authorJonas Karlsson <jonas.karlsson@qt.io>2023-11-08 12:53:50 +0100
committerJonas Karlsson <jonas.karlsson@qt.io>2023-11-08 18:24:17 +0100
commita8df174369cecd90f14dac85bf162353b7cb25d1 (patch)
tree55fc47c9c49e8eb1408df32576dae82f21cbff4d /src/widgets/itemviews/qheaderview.cpp
parent7e8ae9cf12611439462e8b26946473fd6492afcc (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.cpp23
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;