summaryrefslogtreecommitdiffstats
path: root/tests/auto/qgridlayout
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2012-10-21 20:10:22 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-09 14:48:18 +0100
commit7f6155a9c1361355d3c9e88a1a8d1a6415857ebc (patch)
tree4db298129164b4a46eaf1606f7e08f126e0c2f72 /tests/auto/qgridlayout
parent63097b8ab370607b5952d4278609776b0b150634 (diff)
[QTBUG-27420] Make Q{Box,Grid,Form}Layout::takeAt() unparent a nested layout
QStackedLayout doesn't have support for QLayout, only QWidget, so the issue doesn't arise there. (cherry-picked from qtbase/716d33d2a73ade42eb31be3e8ecbaeecdd5ddd21) (only change: s/reset()/clear()/ in the tests) Reported-by: Johannes Schaub Task-number: QTBUG-27420 Change-Id: I7f3c4b1996e954428c00d4dda1095712efa91367 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'tests/auto/qgridlayout')
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp
index 4b06a119b8..64e16c04a6 100644
--- a/tests/auto/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp
@@ -50,6 +50,7 @@
#include <QtGui/QWindowsStyle>
#include <QStyleFactory>
+#include <QSharedPointer>
#include "../../shared/util.h"
#include "../platformquirks.h"
@@ -94,6 +95,8 @@ private slots:
void contentsRect();
void distributeMultiCell();
+ void taskQTBUG_27420_takeAtShouldUnparentLayout();
+
private:
QWidget *testWidget;
QGridLayout *testLayout;
@@ -1642,5 +1645,26 @@ void tst_QGridLayout::distributeMultiCell()
QCOMPARE(w.sizeHint().height(), 11 + 57 + 11);
}
+void tst_QGridLayout::taskQTBUG_27420_takeAtShouldUnparentLayout()
+{
+ QSharedPointer<QGridLayout> outer(new QGridLayout);
+ QPointer<QGridLayout> inner = new QGridLayout;
+
+ outer->addLayout(inner, 0, 0);
+ QCOMPARE(outer->count(), 1);
+ QCOMPARE(inner->parent(), outer.data());
+
+ QLayoutItem *item = outer->takeAt(0);
+ QCOMPARE(item->layout(), inner.data());
+ QVERIFY(!item->layout()->parent());
+
+ outer.clear();
+
+ if (inner)
+ delete item; // success: a taken item/layout should not be deleted when the old parent is deleted
+ else
+ QVERIFY(!inner.isNull());
+}
+
QTEST_MAIN(tst_QGridLayout)
#include "tst_qgridlayout.moc"