From faff43348bfae5cfc709fabe9d2698fc3063c050 Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Tue, 24 Jul 2018 20:44:05 +0200 Subject: [PATCH] QHeaderView: respect min/maxSectionSize in setDefaultSectionSize() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The min/max section size was not checked when setting the default section size. This was an oversight when the check for min/max section size was added to resizeSection(). [ChangeLog][QtWidgets][QHeaderView] setDefaultSectionSize() now checks if the given value is inside min/max section size Task-number: QTBUG-69431 Change-Id: I1b5704282927ce5a8520f52174ebf91d9840bc8a Reviewed-by: Thorbjørn Lund Martsum --- src/widgets/itemviews/qheaderview.cpp | 1 + .../widgets/itemviews/qheaderview/tst_qheaderview.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index 762e852f88..70f8b28299 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -3834,6 +3834,7 @@ void QHeaderViewPrivate::cascadingResize(int visual, int newSize) void QHeaderViewPrivate::setDefaultSectionSize(int size) { Q_Q(QHeaderView); + size = qBound(q->minimumSectionSize(), size, q->maximumSectionSize()); executePostedLayout(); invalidateCachedSizeHint(); defaultSectionSize = size; diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 05eef7c091..b6932d4892 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -405,6 +405,7 @@ void tst_QHeaderView::getSetCheck() // int QHeaderView::defaultSectionSize() // void QHeaderView::setDefaultSectionSize(int) + obj1.setMinimumSectionSize(0); obj1.setDefaultSectionSize(-1); QVERIFY(obj1.defaultSectionSize() >= 0); obj1.setDefaultSectionSize(0); @@ -2060,6 +2061,7 @@ void tst_QHeaderView::defaultSectionSize() QHeaderView h((Qt::Orientation)direction); h.setModel(&m); + h.setMinimumSectionSize(0); QCOMPARE(h.defaultSectionSize(), oldDefaultSize); h.setDefaultSectionSize(newDefaultSize); @@ -3326,8 +3328,16 @@ void tst_QHeaderView::testMinMaxSectionSize() QHeaderView &header = *tv.horizontalHeader(); header.setMinimumSectionSize(sectionSizeMin); header.setMaximumSectionSize(sectionSizeMax); + // check bounds for default section size + header.setDefaultSectionSize(sectionSizeMin - 1); + QCOMPARE(header.defaultSectionSize(), sectionSizeMin); + header.setDefaultSectionSize(sectionSizeMax + 1); + QCOMPARE(header.defaultSectionSize(), sectionSizeMax); + header.setDefaultSectionSize(defaultSectionSize); + QCOMPARE(header.defaultSectionSize(), defaultSectionSize); header.setStretchLastSection(stretchLastSection); + QCOMPARE(header.stretchLastSection(), stretchLastSection); // check defaults QCOMPARE(header.sectionSize(0), defaultSectionSize);