Skip to content

Commit 1d97ada

Browse files
committed
Add test for issue #360
Issue #326 is in the way, so added a workaround. When #326 is fixed, this test will test both code paths.
1 parent a59f843 commit 1d97ada

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

tests/qtwidgets/tst_qtwidgets.cpp

+57
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ private Q_SLOTS:
160160
void tst_standaloneTitleBar();
161161
void tst_widgetAddQAction();
162162
void tst_currentTabChanged();
163+
void tst_nestedMainWindowToggle();
164+
void tst_nestedMainWindowToggle_data();
163165

164166
// And fix these
165167
void tst_floatingWindowDeleted();
@@ -1840,6 +1842,61 @@ void TestQtWidgets::tst_currentTabChanged()
18401842
QCOMPARE(count2, 1);
18411843
}
18421844

1845+
void TestQtWidgets::tst_nestedMainWindowToggle_data()
1846+
{
1847+
QTest::addColumn<bool>("waitAfterClose");
1848+
1849+
// QTest::newRow("false") << false; // uncomment after #326 is fixed
1850+
QTest::newRow("true") << true;
1851+
}
1852+
1853+
void TestQtWidgets::tst_nestedMainWindowToggle()
1854+
{
1855+
QFETCH(bool, waitAfterClose);
1856+
1857+
EnsureTopLevelsDeleted e;
1858+
auto mainWindow = createMainWindow(QSize(1000, 1000), MainWindowOption_None, "MW1");
1859+
auto nestedMainWindow = createMainWindow(QSize(1000, 1000), MainWindowOption_None, "MW2");
1860+
mainWindow->setObjectName("root main window");
1861+
1862+
auto dock1 = new KDDockWidgets::QtWidgets::DockWidget(QStringLiteral("Nested MainWindow Dock container"));
1863+
auto nestedMainWindowQWidget = static_cast<QMainWindow *>(QtCommon::View_qt::asQWidget(nestedMainWindow->view()));
1864+
dock1->setWidget(nestedMainWindowQWidget);
1865+
mainWindow->addDockWidget(dock1->asDockWidgetController(), Location_OnBottom);
1866+
1867+
auto nestedDock = new KDDockWidgets::QtWidgets::DockWidget(QStringLiteral("Nested Dock"));
1868+
nestedMainWindow->addDockWidget(nestedDock->asDockWidgetController(), Location_OnBottom);
1869+
nestedMainWindowQWidget->menuBar()->addMenu("Just a visual cue, to notice the nesting");
1870+
nestedMainWindowQWidget->setObjectName("nested main window");
1871+
QPointer<QObject> guard = nestedMainWindowQWidget;
1872+
1873+
// Close dock1:
1874+
QVERIFY(dock1->isOpen());
1875+
QVERIFY(nestedDock->isOpen());
1876+
1877+
dock1->close();
1878+
QVERIFY(guard); // For some reason nested main window was being deleted
1879+
QVERIFY(!dock1->isOpen());
1880+
QVERIFY(!nestedDock->isOpen());
1881+
1882+
// Reopen dock1, the nested dockwidgets should also reopen
1883+
1884+
if (waitAfterClose) {
1885+
// If false, tests #326, otherwise tests #360
1886+
Platform::instance()->tests_wait(1000);
1887+
}
1888+
1889+
dock1->open();
1890+
1891+
QVERIFY(guard);
1892+
QVERIFY(dock1->isOpen());
1893+
QVERIFY(dock1->isVisible());
1894+
QVERIFY(nestedMainWindowQWidget->isVisible());
1895+
1896+
QEXPECT_FAIL("", "Bug #360, to be fixed", Continue);
1897+
QVERIFY(nestedDock->isOpen());
1898+
}
1899+
18431900
void TestQtWidgets::tstQGraphicsProxyWidget()
18441901
{
18451902
// Tests that using a QGraphicsProxyWidget doesn't crash

0 commit comments

Comments
 (0)