summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/testlib/qtestkeyboard.h11
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp2
2 files changed, 13 insertions, 0 deletions
diff --git a/src/testlib/qtestkeyboard.h b/src/testlib/qtestkeyboard.h
index e2c02ac496..deb572b8fd 100644
--- a/src/testlib/qtestkeyboard.h
+++ b/src/testlib/qtestkeyboard.h
@@ -85,8 +85,13 @@ namespace QTest
QString text, Qt::KeyboardModifiers modifier, int delay=-1)
{
QTEST_ASSERT(qApp);
+
+ if (!window)
+ window = QGuiApplication::activeWindow();
+
QTEST_ASSERT(window);
+
if (action == Click) {
sendKeyEvent(Press, window, code, text, modifier, delay);
sendKeyEvent(Release, window, code, text, modifier, delay);
@@ -183,6 +188,12 @@ namespace QTest
if (!widget)
widget = QWidget::keyboardGrabber();
if (!widget) {
+ QWindow *window = QGuiApplication::focusWindow();
+ if (window) {
+ sendKeyEvent(action, window, code, text, modifier, delay);
+ return;
+ }
+
if (QWidget *apw = QApplication::activePopupWidget())
widget = apw->focusWidget() ? apw->focusWidget() : apw;
else
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 4a6123cdc3..f620b9b9be 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -1249,10 +1249,12 @@ void tst_QMenuBar::taskQTBUG4965_escapeEaten()
menubar.setActiveAction(first);
QTRY_VERIFY(menu.isVisible());
QCOMPARE(menubar.activeAction(), first);
+ QTest::qWaitForWindowShown(&menu);
QTest::keyClick(static_cast<QWidget *>(0), Qt::Key_Escape);
QVERIFY(!menu.isVisible());
QTRY_VERIFY(menubar.hasFocus());
QCOMPARE(menubar.activeAction(), first);
+ QTest::qWait(200);
QTest::keyClick(static_cast<QWidget *>(0), Qt::Key_Escape);
QVERIFY(!menubar.activeAction());
QTest::keyClick(static_cast<QWidget *>(0), Qt::Key_Escape); //now the action should be triggered