diff options
author | Thorbjørn Lund Martsum <tmartsum@gmail.com> | 2012-03-10 16:47:02 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-20 11:44:09 +0100 |
commit | fcc01e6c3736991db2191c151111f03016d2d80b (patch) | |
tree | 6934024b0333968ba7ba8c8177afa5b79f6bc5d0 | |
parent | 07ff7fe52c25a1fde5f56b8a63f0d838f243b422 (diff) |
QHeaderView - minor fix to setDefaultSectionSize
This fixes a situation where we (wrongly) assume that
a section with size 0 is hidden. However a hidden
section should be one that we have called hideSection
(or setSectionHidden) on.
Change-Id: Ic14eded2666022f27434dc55927323a74910549c
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 3 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp | 27 |
2 files changed, 28 insertions, 2 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index 4975e72260..e82cd477c5 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -3339,8 +3339,7 @@ void QHeaderViewPrivate::setDefaultSectionSize(int size) defaultSectionSize = size; for (int i = 0; i < sectionSpans.count(); ++i) { QHeaderViewPrivate::SectionSpan &span = sectionSpans[i]; - if (span.size > 0) { - //we resize it if it is not hidden (ie size > 0) + if (sectionHidden.isEmpty() || !sectionHidden.testBit(i)) { // resize on not hidden. const int newSize = size; if (newSize != span.size) { length += newSize - span.size; //the whole length is changed diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 9ad71771c5..1158a9f06b 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -170,6 +170,7 @@ private slots: void moveSectionAndReset(); void moveSectionAndRemove(); void saveRestore(); + void defaultSectionSizeTest(); void defaultAlignment_data(); void defaultAlignment(); @@ -1625,6 +1626,32 @@ void tst_QHeaderView::saveRestore() QVERIFY(s1 == s2); } +void tst_QHeaderView::defaultSectionSizeTest() +{ + // Setup + QTableView qtv; + QStandardItemModel amodel(4, 4); + qtv.setModel(&amodel); + QHeaderView *hv = qtv.verticalHeader(); + const int defaultSize = 26; + hv->setDefaultSectionSize(defaultSize + 1); // Set it to a value different from defaultSize. + + // no hidden Sections + hv->resizeSection(1, 0); + hv->setDefaultSectionSize(defaultSize); + QVERIFY(hv->sectionSize(1) == defaultSize); + + // with hidden sections + hv->resizeSection(1, 0); + hv->hideSection(2); + hv->setDefaultSectionSize(defaultSize); + + QVERIFY(hv->sectionSize(0) == defaultSize); // trivial case. + QVERIFY(hv->sectionSize(1) == defaultSize); // just sized 0. Now it should be 10 + QVERIFY(hv->sectionSize(2) == 0); // section is hidden. It should not be resized. +} + + void tst_QHeaderView::defaultAlignment_data() { QTest::addColumn<int>("direction"); |