diff --git a/src/testlib/qtesthelpers_p.h b/src/testlib/qtesthelpers_p.h index efe28c4f004..100ad8c2f9b 100644 --- a/src/testlib/qtesthelpers_p.h +++ b/src/testlib/qtesthelpers_p.h @@ -24,6 +24,7 @@ #ifdef QT_GUI_LIB #include #include +#include #endif #ifdef QT_WIDGETS_LIB @@ -91,6 +92,24 @@ static inline void androidCompatibleShow(QWidget *widget) } #endif // QT_WIDGETS_LIB +#ifdef QT_GUI_LIB +bool ensurePositionTopLeft(QWindow *window) +{ + const QPoint availableTopLeft = QGuiApplication::primaryScreen()->availableGeometry().topLeft(); + window->setFramePosition(availableTopLeft); + bool positionCorrect = true; + + if (!window->flags().testFlag(Qt::FramelessWindowHint)) + positionCorrect = QTest::qWaitFor([&]{ return window->framePosition() != window->position() ;}); + + const bool positionUpdated = QTest::qWaitFor([&]{ return window->framePosition() == availableTopLeft ;}); + if (!positionUpdated) + positionCorrect = false; + + return positionCorrect; +} +#endif + #ifdef QT_NETWORK_LIB inline bool isSecureTransportBlockingTest() { diff --git a/tests/auto/gui/kernel/qwindow/CMakeLists.txt b/tests/auto/gui/kernel/qwindow/CMakeLists.txt index 5824989ac34..8fa49f1e5dc 100644 --- a/tests/auto/gui/kernel/qwindow/CMakeLists.txt +++ b/tests/auto/gui/kernel/qwindow/CMakeLists.txt @@ -18,6 +18,7 @@ qt_internal_add_test(tst_qwindow Qt::CorePrivate Qt::Gui Qt::GuiPrivate + Qt::TestPrivate ) if(APPLE OR WIN32 OR QT_FEATURE_xcb)