@@ -160,6 +160,8 @@ private Q_SLOTS:
160
160
void tst_standaloneTitleBar ();
161
161
void tst_widgetAddQAction ();
162
162
void tst_currentTabChanged ();
163
+ void tst_nestedMainWindowToggle ();
164
+ void tst_nestedMainWindowToggle_data ();
163
165
164
166
// And fix these
165
167
void tst_floatingWindowDeleted ();
@@ -1840,6 +1842,61 @@ void TestQtWidgets::tst_currentTabChanged()
1840
1842
QCOMPARE (count2, 1 );
1841
1843
}
1842
1844
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
+
1843
1900
void TestQtWidgets::tstQGraphicsProxyWidget ()
1844
1901
{
1845
1902
// Tests that using a QGraphicsProxyWidget doesn't crash
0 commit comments