summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2012-03-06 13:58:31 +0200
committerQt by Nokia <qt-info@nokia.com>2012-03-07 16:37:55 +0100
commit7bc576771de0b3c96905a6d11a75a01917334dc9 (patch)
treec75cfd5e8864b440dac606c69bbf1162f766043d
parent83d113feb01be72f9a0f1714b69541e7ebc7c4ca (diff)
Fix sending simulated keyboard events to popup widgets
Popup widgets steal the keyboard grab stealthily without it being visible via QWidget::keyboardGrabber(). To more accurately simulate a real keyboard event, prioritize sending simulated keyboard events to the active popup widget over QGuiApplication::focusWindow(). Task-number: QTBUG-24326 Change-Id: Id7a75c613d934e24657b521f1684ce7cce92556a Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
-rw-r--r--src/testlib/qtestkeyboard.h12
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);