diff options
author | Thorbjørn Martsum / Mjølner Informatics <[email protected]> | 2025-07-06 12:14:55 +0200 |
---|---|---|
committer | Thorbjørn Martsum / Mjølner Informatics <[email protected]> | 2025-07-06 21:54:22 +0200 |
commit | 7d19da385a030363343bd9effb38ee877523971d (patch) | |
tree | 9305657d7305ce7c48eb9a6bec7401598b740a8f | |
parent | ab1431e1fcc26107a6b62486cc1eb7f9d0b7c6b8 (diff) |
The useGlobalMode and globalResizeMode testing was not correct.
We just want to look at the input resize parameter and
switch to normal memory mode if that can cause a section resize.
Fixes: QTBUG-138130
Pick-to: 6.9 6.10
Change-Id: If0829e54ec82b68a138a64a770df95ea85ac2e2b
Reviewed-by: Christian Ehrlicher <[email protected]>
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 4 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp | 16 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index b2fa08e406f..06912d41582 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -3671,10 +3671,8 @@ void QHeaderViewPrivate::resizeSections(QHeaderView::ResizeMode globalMode, bool executePostedLayout(); - if (noSectionMemoryUsage() && - (hasAutoResizeSections() || (useGlobalMode && globalResizeMode != QHeaderView::Fixed))) { + if (noSectionMemoryUsage() && (hasAutoResizeSections() || globalMode != QHeaderView::Fixed)) setHeaderMode(HeaderMode::FlexibleWithSectionMemoryUsage); - } if (sectionCount() == 0 ) return; diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 03be7aa0fe9..b651668cabd 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -213,6 +213,7 @@ private slots: void storeRestoreLowMemoryMode(); void setSectionResizeModeWithSectionWillTakeMemory(); void setModelWithAutoSizeWillSwitchToMemoryMode(); + void tableViewResizeSectionsWillSwitchToMemoryMode(); void setDefaultSectionSizeRespectsColumnWidth(); @@ -3559,12 +3560,17 @@ struct TableViewWithBasicModel : public QTableView emptyState = verticalHeader()->saveState(); setModel(&m); header = verticalHeader(); + horizontal_header = horizontalHeader(); } bool hasLowMemoryUsage() const { return emptyState.size() == header->saveState().size(); } + bool horizontalLowMememorUsage() const { + return emptyState.size() == horizontal_header->saveState().size(); + } + bool hasHigherMemoryUsage() const { const int delta = 1000; return header->saveState().size() > delta + emptyState.size(); @@ -3572,6 +3578,7 @@ struct TableViewWithBasicModel : public QTableView BasicModel m; QHeaderView *header; + QHeaderView *horizontal_header; QByteArray emptyState; }; @@ -3770,6 +3777,15 @@ void tst_QHeaderView::setModelWithAutoSizeWillSwitchToMemoryMode() QCOMPARE_GT(nonEmptyState.size(), emptyState.size() + delta); } +void tst_QHeaderView::tableViewResizeSectionsWillSwitchToMemoryMode() +{ + TableViewWithBasicModel tv; + QVERIFY(tv.horizontalLowMememorUsage()); + tv.horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); + tv.resizeColumnsToContents(); + QVERIFY(!tv.horizontalLowMememorUsage()); +} + void tst_QHeaderView::setDefaultSectionSizeRespectsColumnWidth() { QTreeWidget tree; |