From ede7d80b39051f41bbe4a20ac4e2c824969a66e9 Mon Sep 17 00:00:00 2001 From: Axel Spoerl Date: Fri, 22 Dec 2023 13:04:21 +0100 Subject: [PATCH] Test restored state in tst_QDockWidget::hideAndShow() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 4c60a11d8f935abb762a83b0ab99cefa6db3060c had to be reverted, because it broke restoring the state of hidden, floating dock widgets. Extend tst_QDockWdget::hideAndShow() to test this functionality. Blacklist test function on Apple, because Apple machines on CI show dock widgets with the main window. Task-number: QTBUG-120191 Change-Id: Ibc6121a99f15f33d62ca0a9376dbe9fafbe20290 Reviewed-by: Volker Hilsheimer Reviewed-by: Tor Arne Vestbø (cherry picked from commit 3195e34742731406a923b545bd85a5a33e970a42) Reviewed-by: Qt Cherry-pick Bot --- .../widgets/widgets/qdockwidget/tst_qdockwidget.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp index fc48deec0bb..ea70af1a5db 100644 --- a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp +++ b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp @@ -1650,7 +1650,7 @@ void tst_QDockWidget::hideAndShow() unplugAndResize(mainWindow, d1, home1(mainWindow), size1(mainWindow)); unplugAndResize(mainWindow, d2, home2(mainWindow), size2(mainWindow)); - // Check hiding of undocked widgets + // Check hiding of undocked widgets qCDebug(lcTestDockWidget) << "Hiding mainWindow with unplugged dock widgets" << mainWindow; mainWindow->hide(); QTRY_VERIFY(!mainWindow->isVisible()); @@ -1661,6 +1661,16 @@ void tst_QDockWidget::hideAndShow() QTRY_VERIFY(!d1->isVisible()); QTRY_VERIFY(!d2->isVisible()); + + // Check floating, hidden dock widgets remain hidden, when their state is restored + qCDebug(lcTestDockWidget) << "Restoring state of unplugged, hidden dock widgets" << mainWindow; + const QByteArray state = mainWindow->saveState(); + mainWindow->restoreState(state); + mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(mainWindow)); + QTRY_VERIFY(!d1->isVisible()); + QTRY_VERIFY(!d2->isVisible()); + qCDebug(lcTestDockWidget) << "Waiting" << waitBeforeClose << "ms before closing."; QTest::qWait(waitBeforeClose); #else