Harden tst_QWindow::framePositioningStableAfterDestroy()

StablePosition was in some cases recording a wrong position, as it was
taking the framePosition and considering it to be the widget's
position. That erroneous position was then used to place the window,
resulting in a correct position but a wrong framePosition.

Wait and check for the window.geometry() and the
window.frameGeometry() to be different. If not the frame
has not been updated, or there is no frame when there
should be one. The test will most likely fail because
of this.

Fix flakiness on Opensuse 15

Pick-to: 6.9 6.8 6.5
Change-Id: I8e05ee7769de4efc2ac55ec7afbe366f76e325db
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Frédéric Lefebvre 2025-01-02 10:03:39 +01:00
parent 280025fc7e
commit 21ef8bed6d

View File

@ -678,14 +678,18 @@ void tst_QWindow::framePositioningStableAfterDestroy()
window.show();
QVERIFY(QTest::qWaitForWindowExposed(&window));
const bool frameOk = QTest::qWaitFor([&]{return window.geometry() != window.frameGeometry(); });
if (!frameOk)
qCritical() << "Frame geometry failed to update";
const QPoint stablePosition = window.position();
const QPoint stableFramePosition = window.framePosition();
window.destroy();
window.show();
QVERIFY(QTest::qWaitForWindowExposed(&window));
QCOMPARE(window.position(), stablePosition);
QCOMPARE(window.framePosition(), stableFramePosition);
QTRY_COMPARE(window.position(), stablePosition);
QTRY_COMPARE(window.framePosition(), stableFramePosition);
}
void tst_QWindow::positioningDuringMinimized()