tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
changeset 33 3e2da88830cd
parent 18 2f34d5167611
child 37 758a864f9613
--- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -105,6 +105,7 @@
     void geometries_data();
     void geometries();
     void avoidRecursionInInsertItem();
+    void styleInfoLeak();
     void task236367_maxSizeHint();
 };
 
@@ -741,31 +742,73 @@
 // public qreal columnSpacing(int column) const
 void tst_QGraphicsGridLayout::columnSpacing()
 {
-    QGraphicsScene scene;
-    QGraphicsView view(&scene);
-    QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
-    QGraphicsGridLayout *layout = new QGraphicsGridLayout();
-    scene.addItem(widget);
-    widget->setLayout(layout);
-    populateLayout(layout, 3, 2);
-    layout->setContentsMargins(0, 0, 0, 0);
-    layout->setSpacing(0);
-    QCOMPARE(layout->columnSpacing(0), 0.0);
+    {
+        QGraphicsScene scene;
+        QGraphicsView view(&scene);
+        QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
+        QGraphicsGridLayout *layout = new QGraphicsGridLayout();
+        scene.addItem(widget);
+        widget->setLayout(layout);
+        populateLayout(layout, 3, 2);
+        layout->setContentsMargins(0, 0, 0, 0);
+        layout->setSpacing(0);
+        QCOMPARE(layout->columnSpacing(0), 0.0);
+
+        layout->setColumnSpacing(0, 20);
+        view.show();
+        widget->show();
+        widget->resize(widget->effectiveSizeHint(Qt::PreferredSize));
+        QApplication::processEvents();
+
+        QCOMPARE(layout->itemAt(0,0)->geometry().left(),   0.0);
+        QCOMPARE(layout->itemAt(0,0)->geometry().right(), 25.0);
+        QCOMPARE(layout->itemAt(0,1)->geometry().left(),  45.0);
+        QCOMPARE(layout->itemAt(0,1)->geometry().right(), 70.0);
+        QCOMPARE(layout->itemAt(0,2)->geometry().left(),  70.0);
+        QCOMPARE(layout->itemAt(0,2)->geometry().right(), 95.0);
+
+        delete widget;
+    }
 
-    layout->setColumnSpacing(0, 20);
-    view.show();
-    widget->show();
-    widget->resize(widget->effectiveSizeHint(Qt::PreferredSize));
-    QApplication::processEvents();
+    {
+        // don't include items and spacings that was previously part of the layout
+        // (horizontal)
+        QGraphicsGridLayout *layout = new QGraphicsGridLayout;
+        populateLayout(layout, 3, 1);
+        layout->setContentsMargins(0, 0, 0, 0);
+        layout->setSpacing(0);
+        layout->setColumnSpacing(0, 10);
+        layout->setColumnSpacing(1, 10);
+        layout->setColumnSpacing(2, 10);
+        layout->setColumnSpacing(3, 10);
+        QCOMPARE(layout->preferredSize(), QSizeF(95, 25));
+        layout->removeAt(2);
+        QCOMPARE(layout->preferredSize(), QSizeF(60, 25));
+        layout->removeAt(1);
+        QCOMPARE(layout->preferredSize(), QSizeF(25, 25));
+        delete layout;
+    }
+    {
+        // don't include items and spacings that was previously part of the layout
+        // (vertical)
+        QGraphicsGridLayout *layout = new QGraphicsGridLayout;
+        populateLayout(layout, 2, 2);
+        layout->setContentsMargins(0, 0, 0, 0);
+        layout->setSpacing(0);
+        layout->setColumnSpacing(0, 10);
+        layout->setColumnSpacing(1, 10);
+        layout->setRowSpacing(0, 10);
+        layout->setRowSpacing(1, 10);
+        QCOMPARE(layout->preferredSize(), QSizeF(60, 60));
+        layout->removeAt(3);
+        QCOMPARE(layout->preferredSize(), QSizeF(60, 60));
+        layout->removeAt(2);
+        QCOMPARE(layout->preferredSize(), QSizeF(60, 25));
+        layout->removeAt(1);
+        QCOMPARE(layout->preferredSize(), QSizeF(25, 25));
+        delete layout;
+    }
 
-    QCOMPARE(layout->itemAt(0,0)->geometry().left(),   0.0);
-    QCOMPARE(layout->itemAt(0,0)->geometry().right(), 25.0);
-    QCOMPARE(layout->itemAt(0,1)->geometry().left(),  45.0);
-    QCOMPARE(layout->itemAt(0,1)->geometry().right(), 70.0);
-    QCOMPARE(layout->itemAt(0,2)->geometry().left(),  70.0);
-    QCOMPARE(layout->itemAt(0,2)->geometry().right(), 95.0);
-
-    delete widget;
 }
 
 // public int columnStretchFactor(int column) const
@@ -2154,6 +2197,12 @@
     QCOMPARE(layout->count(), 0);
 }
 
+void tst_QGraphicsGridLayout::styleInfoLeak()
+{
+    QGraphicsGridLayout grid;
+    grid.horizontalSpacing();
+}
+
 void tst_QGraphicsGridLayout::task236367_maxSizeHint()
 {
     QGraphicsWidget *widget = new QGraphicsWidget;