From 9d2a929fa4dd0beae3c30fb08d4ed4df7368ea4f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 5 Dec 2018 11:28:47 +0100 Subject: tst_qquickwidget::enterLeave(): Handle varying screen setups Take the available screen geometry and window borders into account when positioning windows and moving cursors. Task-number: QTBUG-64397 Fixes: QTBUG-72305 Change-Id: Ia2b35a0deb144ab7194f7658d599888ff9d4a706 Reviewed-by: Shawn Rutledge --- tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp') diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp index e523274d0a..24e55e3b3a 100644 --- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp +++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp @@ -35,6 +35,7 @@ #include #include "../../shared/util.h" #include +#include #include #include #include @@ -144,6 +145,7 @@ private slots: private: QTouchDevice *device = QTest::createTouchDevice(); + const QRect m_availableGeometry = QGuiApplication::primaryScreen()->availableGeometry(); }; tst_qquickwidget::tst_qquickwidget() @@ -199,7 +201,7 @@ void tst_qquickwidget::changeGeometry() void tst_qquickwidget::resizemodeitem() { QWidget window; - window.setGeometry(0, 0, 400, 400); + window.setGeometry(m_availableGeometry.left(), m_availableGeometry.top(), 400, 400); QScopedPointer view(new QQuickWidget); view->setParent(&window); @@ -533,18 +535,20 @@ void tst_qquickwidget::enterLeave() view.setSource(testFileUrl("enterleave.qml")); // Ensure it is not inside the window first - QCursor::setPos(QPoint(50, 50)); - QTRY_VERIFY(QCursor::pos() == QPoint(50, 50)); + const auto outside = m_availableGeometry.topLeft() + QPoint(50, 50); + QCursor::setPos(outside); + QTRY_VERIFY(QCursor::pos() == outside); - view.move(100, 100); + view.move(m_availableGeometry.topLeft() + QPoint(100, 100)); view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view, 5000)); QQuickItem *rootItem = view.rootObject(); QVERIFY(rootItem); + const QPoint frameOffset = view.geometry().topLeft() - view.frameGeometry().topLeft(); QTRY_VERIFY(!rootItem->property("hasMouse").toBool()); // Check the enter - QCursor::setPos(view.pos() + QPoint(50, 50)); + QCursor::setPos(view.pos() + QPoint(50, 50) + frameOffset); QTRY_VERIFY(rootItem->property("hasMouse").toBool()); // Now check the leave QCursor::setPos(view.pos() - QPoint(50, 50)); -- cgit v1.2.3