diff options
-rw-r--r-- | src/testlib/qtestkeyboard.h | 11 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp | 2 |
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 |