diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-05 11:28:47 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-07 14:51:47 +0000 |
commit | 9d2a929fa4dd0beae3c30fb08d4ed4df7368ea4f (patch) | |
tree | b302e6697f86d9a8fc3d9a820f233dffea383792 /tests/auto/quickwidgets | |
parent | b55b3692f6cc57f8a7ef972388504b5133331ceb (diff) |
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 <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/auto/quickwidgets')
-rw-r--r-- | tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
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 <QtQuick/qquickitem.h> #include "../../shared/util.h" #include <QtGui/QWindow> +#include <QtGui/QScreen> #include <QtGui/QImage> #include <QtCore/QDebug> #include <QtQml/qqmlengine.h> @@ -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<QQuickWidget> 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)); |