From fc271b4273c7ebfe2d08a6a29ec99c2f13ebb8cd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Fri, 9 Nov 2012 15:58:57 +0100 Subject: [PATCH] Regression fix to QHeaderView::setDefaultSectionSize When the sections has been resized we need to calculate new values for the section start-positions. Otherwise we break visualIndexAt and sectionPosition. This fixes a regression introduced in b800d8b94a7861ecf8853621f6556fca186fb5b7 Change-Id: I148dbf44f742208787ed59b70d82b8048d721e90 Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qheaderview.cpp | 1 + tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index fa774b5..21c2e90 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -3382,6 +3382,7 @@ void QHeaderViewPrivate::setDefaultSectionSize(int size) } } } + sectionStartposRecalc = true; } void QHeaderViewPrivate::recalcSectionStartPos() const // linear (but fast) diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 844c664..e618115 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -1637,9 +1637,15 @@ void tst_QHeaderView::defaultSectionSizeTest() { // Setup QTableView qtv; + QHeaderView *hv = qtv.verticalHeader(); + hv->setDefaultSectionSize(99); // Set it to a value different from defaultSize. QStandardItemModel amodel(4, 4); qtv.setModel(&amodel); - QHeaderView *hv = qtv.verticalHeader(); + QCOMPARE(hv->sectionSize(0), 99); + QCOMPARE(hv->visualIndexAt(50), 0); // <= also make sure that indexes are calculated + hv->setDefaultSectionSize(40); // Set it to a value different from defaultSize. + QCOMPARE(hv->visualIndexAt(50), 1); + const int defaultSize = 26; hv->setDefaultSectionSize(defaultSize + 1); // Set it to a value different from defaultSize. -- 2.7.4