From 623e9b1fb44ea7dedf7037477f7005dcb0ea368b Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Mon, 29 Apr 2024 20:49:47 +0200 Subject: [PATCH] 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 (cherry picked from commit f6fdd91941de1cefb021b837ece77fec7363f23c) Reviewed-by: Qt Cherry-pick Bot --- tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index cb3331a0349..924c4853062 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -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; }))