diff options
Diffstat (limited to 'tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp')
-rw-r--r-- | tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp b/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp index 377226d5ac..535972e52d 100644 --- a/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp +++ b/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp @@ -146,9 +146,26 @@ void tst_QAbstractPrintDialog::hideNativeByDestruction() QWidget window; QWidget *child = new QWidget(&window); QPointer<QPrintDialog> dialog = new QPrintDialog(child); + // Make it application modal so that we don't end up with a sheet on macOS + dialog->setWindowModality(Qt::ApplicationModal); window.show(); QVERIFY(QTest::qWaitForWindowActive(&window)); dialog->open(); + + // We test that the dialog opens and closes by watching the activation of the + // transient parent window. If it doesn't deactivate, then we have to skip. + const auto windowActive = [&window]{ return window.isActiveWindow(); }; + const auto windowInactive = [&window]{ return !window.isActiveWindow(); }; + if (!QTest::qWaitFor(windowInactive, 2000)) + QSKIP("Dialog didn't activate"); + + // This should destroy the dialog and close the native window + child->deleteLater(); + QTRY_VERIFY(!dialog); + // If the native window is still open, then the transient parent can't become + // active + window.activateWindow(); + QVERIFY(QTest::qWaitFor(windowActive)); } #endif |