diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/testlib/qtestkeyboard.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/testlib/qtestkeyboard.h b/src/testlib/qtestkeyboard.h index 897c732f45..5625bd606c 100644 --- a/src/testlib/qtestkeyboard.h +++ b/src/testlib/qtestkeyboard.h @@ -192,18 +192,20 @@ namespace QTest if (!widget) widget = QWidget::keyboardGrabber(); if (!widget) { + // Popup widgets stealthily steal the keyboard grab + if (QWidget *apw = QApplication::activePopupWidget()) + widget = apw->focusWidget() ? apw->focusWidget() : apw; + } + 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 - widget = QApplication::focusWidget(); } if (!widget) + widget = QApplication::focusWidget(); + if (!widget) widget = QApplication::activeWindow(); QTEST_ASSERT(widget); |