diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/dialogs/qdialog/qdialog.pro | 2 | ||||
-rw-r--r-- | tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp | 33 |
2 files changed, 32 insertions, 3 deletions
diff --git a/tests/auto/widgets/dialogs/qdialog/qdialog.pro b/tests/auto/widgets/dialogs/qdialog/qdialog.pro index 72a2dc52b3..c7917e8ff6 100644 --- a/tests/auto/widgets/dialogs/qdialog/qdialog.pro +++ b/tests/auto/widgets/dialogs/qdialog/qdialog.pro @@ -1,5 +1,5 @@ CONFIG += testcase CONFIG += parallel_test TARGET = tst_qdialog -QT += widgets testlib +QT += widgets testlib gui-private core-private SOURCES += tst_qdialog.cpp diff --git a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp index 6d847086d9..1aab794e1b 100644 --- a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp +++ b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp @@ -49,8 +49,10 @@ #include <qstyle.h> #include <QVBoxLayout> #include <QSizeGrip> - - +#include <QDesktopWidget> +#include <private/qguiapplication_p.h> +#include <qpa/qplatformtheme.h> +#include <qpa/qplatformtheme_p.h> QT_FORWARD_DECLARE_CLASS(QDialog) @@ -82,6 +84,7 @@ private slots: #endif void setVisible(); void reject(); + void snapToDefaultButton(); private: QDialog *testWidget; @@ -554,6 +557,32 @@ void tst_QDialog::reject() QCOMPARE(dialog.called, 4); } +void tst_QDialog::snapToDefaultButton() +{ +#ifdef QT_NO_CURSOR + QSKIP("Test relies on there being a cursor"); +#else + QPoint topLeftPos = QApplication::desktop()->availableGeometry().topLeft(); + topLeftPos = QPoint(topLeftPos.x() + 100, topLeftPos.y() + 100); + QPoint startingPos(topLeftPos.x() + 250, topLeftPos.y() + 250); + QCursor::setPos(startingPos); + QVERIFY(QCursor::pos() == startingPos); + QDialog dialog; + QPushButton *button = new QPushButton(&dialog); + button->setDefault(true); + dialog.setGeometry(QRect(topLeftPos, QSize(200, 200))); + dialog.show(); + QVERIFY(QTest::qWaitForWindowExposed(&dialog)); + if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { + if (theme->themeHint(QPlatformTheme::DialogSnapToDefaultButton).toBool()) { + QPoint localPos = button->mapFromGlobal(QCursor::pos()); + QVERIFY(button->rect().contains(localPos)); + } else { + QVERIFY(startingPos == QCursor::pos()); + } + } +#endif // !QT_NO_CURSOR +} QTEST_MAIN(tst_QDialog) #include "tst_qdialog.moc" |