From 6b0cb98478fe4347f05944c8944e7786ec5555a6 Mon Sep 17 00:00:00 2001 From: Jonas Karlsson Date: Mon, 26 Feb 2024 12:32:20 +0100 Subject: [PATCH] Revert "QHeaderView: relayout on resetDefaultSectionSize" This reverts commit a8df174369cecd90f14dac85bf162353b7cb25d1. Reason for revert: Caused QTBUG-122109 Pick-to: 6.6 6.5 Fixes: QTBUG-122109 Fixes: QTBUG-120699 Change-Id: Iea185c00f35e17d8eb8e8da70dc2d808ea274b04 Reviewed-by: Axel Spoerl (cherry picked from commit c1921abf65092f4732435a92732c8c11224d31fb) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/itemviews/qheaderview.cpp | 23 ++++++++++--------- src/widgets/itemviews/qheaderview_p.h | 4 ++-- .../itemviews/qtableview/tst_qtableview.cpp | 1 + 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index c7da20068c8..8078e46c194 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -1529,14 +1529,13 @@ 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->setDefaultSectionSize(d->getDefaultSectionSizeFromStyle()); + d->updateDefaultSectionSizeFromStyle(); d->customDefaultSectionSize = false; } } @@ -2388,7 +2387,7 @@ bool QHeaderView::event(QEvent *e) break; } case QEvent::StyleChange: if (!d->customDefaultSectionSize) - d->setDefaultSectionSize(d->getDefaultSectionSizeFromStyle()); + d->updateDefaultSectionSizeFromStyle(); break; default: break; @@ -3855,6 +3854,7 @@ 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,14 +3875,15 @@ void QHeaderViewPrivate::setDefaultSectionSize(int size) viewport->update(); } -int QHeaderViewPrivate::getDefaultSectionSizeFromStyle() const +void QHeaderViewPrivate::updateDefaultSectionSizeFromStyle() { - 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)); + 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)); + } } void QHeaderViewPrivate::recalcSectionStartPos() const // linear (but fast) @@ -4191,7 +4192,7 @@ bool QHeaderViewPrivate::read(QDataStream &in) if (in.status() == QDataStream::Ok) { // we haven't read past end customDefaultSectionSize = tmpbool; if (!customDefaultSectionSize) - defaultSectionSize = getDefaultSectionSizeFromStyle(); + updateDefaultSectionSizeFromStyle(); } lastSectionSize = -1; diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h index 7600f7a6776..8b214e1d03e 100644 --- a/src/widgets/itemviews/qheaderview_p.h +++ b/src/widgets/itemviews/qheaderview_p.h @@ -148,7 +148,7 @@ public: inline void setDefaultValues(Qt::Orientation o) { orientation = o; - defaultSectionSize = getDefaultSectionSizeFromStyle(); + updateDefaultSectionSizeFromStyle(); defaultAlignment = (o == Qt::Horizontal ? Qt::Alignment(Qt::AlignCenter) : Qt::AlignLeft|Qt::AlignVCenter); @@ -323,7 +323,7 @@ public: void removeSectionsFromSectionItems(int start, int end); void resizeSectionItem(int visualIndex, int oldSize, int newSize); void setDefaultSectionSize(int size); - int getDefaultSectionSizeFromStyle() const; + void updateDefaultSectionSizeFromStyle(); void recalcSectionStartPos() const; // not really const inline int headerLength() const { // for debugging diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp index 2847ce3b278..55de7d6b234 100644 --- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp +++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp @@ -4922,6 +4922,7 @@ void tst_QTableView::resetDefaultSectionSize() view.verticalHeader()->resetDefaultSectionSize(); view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view)); + QEXPECT_FAIL("", "Reverted fix for QTBUG-116013 due to QTBUG-122109", Continue); QCOMPARE(view.verticalHeader()->logicalIndexAt(9, 45), 1); }