Tests/QWidget: fix hoverPosition test for openSUSE
On some xcb platforms the xcb_configure_notify_event_t is sent after the window is fully exposed which leads to a wrong position for QWidget::mapToGlobal(). In this case this results in a wrong position for QCursor::setPos() which lets the test fail. Fix it by waiting for a move event with a position != 0,0 before calling mapToParent/Global(). Pick-to: 6.5 6.2 Fixes: QTBUG-123998 Change-Id: Ic5e989c4497ccf3ed720a521f9d7e73632b4b1fc Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit f6fdd91941de1cefb021b837ece77fec7363f23c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
813d8d5588
commit
623e9b1fb4
@ -11079,6 +11079,10 @@ void tst_QWidget::hoverPosition()
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&root));
|
||||
|
||||
const QPoint middle(50, 50);
|
||||
// wait until we got the correct global pos
|
||||
QPoint expectedGlobalPos = root.geometry().topLeft() + QPoint(100, 100) + middle;
|
||||
if (!QTest::qWaitFor([&]{ return expectedGlobalPos == h.mapToGlobal(middle); }))
|
||||
QSKIP("Can't move cursor");
|
||||
QPoint curpos = h.mapToGlobal(middle);
|
||||
QCursor::setPos(curpos);
|
||||
if (!QTest::qWaitFor([curpos]{ return QCursor::pos() == curpos; }))
|
||||
|
Loading…
x
Reference in New Issue
Block a user