From 716d33d2a73ade42eb31be3e8ecbaeecdd5ddd21 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 21 Oct 2012 20:10:22 +0200 Subject: [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. Reported-by: Johannes Schaub Task-number: QTBUG-27420 Change-Id: I71f8d10a036918c16d8f8c9197a2ec61cd76cf01 Reviewed-by: Friedemann Kleint --- .../widgets/kernel/qformlayout/tst_qformlayout.cpp | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp') diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp index 3aa0ea03f4..b2cdb87221 100644 --- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp +++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include @@ -123,6 +124,8 @@ private slots: Qt::Orientations expandingDirections() const; */ + void taskQTBUG_27420_takeAtShouldUnparentLayout(); + }; tst_QFormLayout::tst_QFormLayout() @@ -901,6 +904,27 @@ void tst_QFormLayout::layoutAlone() QTest::qWait(500); } +void tst_QFormLayout::taskQTBUG_27420_takeAtShouldUnparentLayout() +{ + QSharedPointer outer(new QFormLayout); + QPointer inner = new QFormLayout; + + outer->addRow(inner); + QCOMPARE(outer->count(), 1); + QCOMPARE(inner->parent(), outer.data()); + + QLayoutItem *item = outer->takeAt(0); + QCOMPARE(item->layout(), inner.data()); + QVERIFY(!item->layout()->parent()); + + outer.reset(); + + 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_QFormLayout) #include "tst_qformlayout.moc" -- cgit v1.2.3