tests/auto/qsplitter/tst_qsplitter.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/tests/auto/qsplitter/tst_qsplitter.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/tests/auto/qsplitter/tst_qsplitter.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -102,6 +102,8 @@
     void task187373_addAbstractScrollAreas();
     void task187373_addAbstractScrollAreas_data();
     void task169702_sizes();
+    void taskQTBUG_4101_ensureOneNonCollapsedWidget_data();
+    void taskQTBUG_4101_ensureOneNonCollapsedWidget();
 
 private:
     void removeThirdWidget();
@@ -1281,6 +1283,8 @@
 public:
     MyFriendlySplitter(QWidget *parent = 0) : QSplitter(parent) {}
     void setRubberBand(int pos) { QSplitter::setRubberBand(pos); }
+
+    friend class tst_QSplitter;
 };
 
 void tst_QSplitter::rubberBandNotInSplitter()
@@ -1403,5 +1407,35 @@
     QCOMPARE(testW->size().height(), testW->minimumSizeHint().height());
 }
 
+void tst_QSplitter::taskQTBUG_4101_ensureOneNonCollapsedWidget_data()
+{
+    QTest::addColumn<bool>("testingHide");
+
+    QTest::newRow("last non collapsed hidden") << true;
+    QTest::newRow("last non collapsed deleted") << false;
+}
+
+void tst_QSplitter::taskQTBUG_4101_ensureOneNonCollapsedWidget()
+{
+    QFETCH(bool, testingHide);
+
+    MyFriendlySplitter s;
+    QLabel *l;
+    for (int i = 0; i < 5; ++i) {
+        l = new QLabel(QString("Label ") + QChar('A' + i));
+        l->setAlignment(Qt::AlignCenter);
+        s.addWidget(l);
+        s.moveSplitter(0, i);  // Collapse all the labels except the last one.
+    }
+
+    s.show();
+    if (testingHide)
+        l->hide();
+    else
+        delete l;
+    QTest::qWait(100);
+    QVERIFY(s.sizes().at(0) > 0);
+}
+
 QTEST_MAIN(tst_QSplitter)
 #include "tst_qsplitter.moc"