summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
index c3d2c4a9e7..cd9ff28891 100644
--- a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
+++ b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
@@ -50,6 +50,7 @@
#include <QVBoxLayout>
#include <QSizeGrip>
#include <QDesktopWidget>
+#include <QWindow>
#include <private/qguiapplication_p.h>
#include <qpa/qplatformtheme.h>
#include <qpa/qplatformtheme_p.h>
@@ -85,6 +86,8 @@ private slots:
void setVisible();
void reject();
void snapToDefaultButton();
+ void transientParent_data();
+ void transientParent();
private:
QDialog *testWidget;
@@ -584,5 +587,34 @@ void tst_QDialog::snapToDefaultButton()
#endif // !QT_NO_CURSOR
}
+void tst_QDialog::transientParent_data()
+{
+ QTest::addColumn<bool>("nativewidgets");
+ QTest::newRow("Non-native") << false;
+ QTest::newRow("Native") << true;
+}
+
+void tst_QDialog::transientParent()
+{
+ QFETCH(bool, nativewidgets);
+ testWidget->hide();
+ QWidget topLevel;
+ topLevel.resize(200, 200);
+ topLevel.move(QGuiApplication::primaryScreen()->availableGeometry().center() - QPoint(100, 100));
+ QVBoxLayout *layout = new QVBoxLayout(&topLevel);
+ QWidget *innerWidget = new QWidget(&topLevel);
+ layout->addWidget(innerWidget);
+ if (nativewidgets)
+ innerWidget->winId();
+ topLevel.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&topLevel));
+ QDialog dialog(innerWidget);
+ dialog.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&dialog));
+ // Transient parent should always be the top level, also when using
+ // native child widgets.
+ QCOMPARE(dialog.windowHandle()->transientParent(), topLevel.windowHandle());
+}
+
QTEST_MAIN(tst_QDialog)
#include "tst_qdialog.moc"