QHeaderView - preventing negative section sizes.
authorThorbjørn Lund Martsum <tmartsum@gmail.com>
Tue, 10 Jan 2012 18:33:14 +0000 (19:33 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 1 Feb 2012 01:16:08 +0000 (02:16 +0100)
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 <stephen.kelly@kdab.com>
src/widgets/itemviews/qheaderview.cpp
tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp

index b52c2d6..83c4fd0 100644 (file)
@@ -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)) {
index 62da333..2a0a40f 100644 (file)
@@ -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;