Stabilize flakiness in tst_QWidget::multipleToplevelFocusCheck()
multipleToplevelFocusCheck() occasionally failed on XCB because QApplication::activeWindow() was nullptr immediately after qWaitForWindowActive() returned true. This patch replaces QCOMPARE on QGuiApplicaiton::activeWindow() with QTRY_COMPARE in order to continue spinning the event loop until the condition has been met. It adds QWidget::activateWindow after show() to ensure focus is acquired also when another window has received focus in the meanwhile. Pick-to: 6.2 6.4 Change-Id: If84eb8b77c5a6b16af271334a1fe5eb92c05644b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>bb10
parent
9d16d5e224
commit
99aadcad5e
|
|
@ -6350,17 +6350,17 @@ void tst_QWidget::multipleToplevelFocusCheck()
|
|||
w2.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&w2));
|
||||
|
||||
QApplicationPrivate::setActiveWindow(&w1);
|
||||
w1.activateWindow();
|
||||
QApplicationPrivate::setActiveWindow(&w1);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&w1));
|
||||
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w1));
|
||||
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w1));
|
||||
QTest::mouseDClick(&w1, Qt::LeftButton);
|
||||
QTRY_COMPARE(QApplication::focusWidget(), static_cast<QWidget *>(w1.edit));
|
||||
|
||||
w2.activateWindow();
|
||||
QApplicationPrivate::setActiveWindow(&w2);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&w2));
|
||||
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w2));
|
||||
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w2));
|
||||
QTest::mouseClick(&w2, Qt::LeftButton);
|
||||
QTRY_COMPARE(QApplication::focusWidget(), nullptr);
|
||||
|
||||
|
|
@ -6370,14 +6370,14 @@ void tst_QWidget::multipleToplevelFocusCheck()
|
|||
w1.activateWindow();
|
||||
QApplicationPrivate::setActiveWindow(&w1);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&w1));
|
||||
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w1));
|
||||
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w1));
|
||||
QTest::mouseDClick(&w1, Qt::LeftButton);
|
||||
QTRY_COMPARE(QApplication::focusWidget(), static_cast<QWidget *>(w1.edit));
|
||||
|
||||
w2.activateWindow();
|
||||
QApplicationPrivate::setActiveWindow(&w2);
|
||||
QVERIFY(QTest::qWaitForWindowActive(&w2));
|
||||
QCOMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w2));
|
||||
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&w2));
|
||||
QTest::mouseClick(&w2, Qt::LeftButton);
|
||||
QTRY_COMPARE(QApplication::focusWidget(), nullptr);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue