From 96f1fe8855082017fbbecccdab1eb11fd8c1f870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Tue, 10 Jan 2012 19:33:14 +0100 Subject: [PATCH] QHeaderView - preventing negative section sizes. This patch removes the posibility to call resizeSection with negative sizes. Sections with negative sizes affect the other sections, and it does not seem to have a useful, well-defined semantic. The length can also become negative - and visualIndexAt work strange. Change-Id: I632beb160649fa10e2106314557b8c5a106aa3cf Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qheaderview.cpp | 2 +- .../widgets/itemviews/qheaderview/tst_qheaderview.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index b52c2d6038..83c4fd0071 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -874,7 +874,7 @@ void QHeaderView::swapSections(int first, int second) void QHeaderView::resizeSection(int logical, int size) { Q_D(QHeaderView); - if (logical < 0 || logical >= count()) + if (logical < 0 || logical >= count() || size < 0) return; if (isSectionHidden(logical)) { diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 62da3337e1..2a0a40f542 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -172,6 +172,7 @@ private slots: void removeSection(); void preserveHiddenSectionWidth(); void invisibleStretchLastSection(); + void noSectionsWithNegativeSize(); void emptySectionSpan(); void task236450_hidden_data(); @@ -1853,6 +1854,15 @@ void tst_QHeaderView::invisibleStretchLastSection() QCOMPARE(view.sectionSize(count - 1), view.defaultSectionSize() * 2); } +void tst_QHeaderView::noSectionsWithNegativeSize() +{ + QStandardItemModel m(4, 4); + QHeaderView h(Qt::Horizontal); + h.setModel(&m); + h.resizeSection(1, -5); + QVERIFY(h.sectionSize(1) >= 0); // Sections with negative sizes not well defined. +} + void tst_QHeaderView::emptySectionSpan() { QHeaderViewPrivate::SectionSpan span;