summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/render_widget_host_view_qt.cpp5
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp11
2 files changed, 13 insertions, 3 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 131f2a664..dd372b72f 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -1145,8 +1145,9 @@ void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
if (keyDownTextInsertion) {
// Blink won't consume the RawKeyDown, but rather the Char event in this case.
- // Make sure to skip the former on the way back. The same os_event will be set on both of them.
- webEvent.skip_in_browser = true;
+ // The RawKeyDown is skipped on the way back (see above).
+ // The same os_event will be set on both NativeWebKeyboardEvents.
+ webEvent.skip_in_browser = false;
webEvent.type = blink::WebInputEvent::Char;
m_host->ForwardKeyboardEvent(webEvent);
}
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 8509e9a2d..7fbbd63d3 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -447,16 +447,25 @@ void tst_QWebEngineView::unhandledKeyEventPropagation()
QTRY_COMPARE(parentWidget.releaseEvents.size(), 3);
QCOMPARE(evaluateJavaScriptSync(webView.page(), "document.activeElement.id").toString(), QStringLiteral("second_div"));
+ // Focus the button and press 'y'.
+ evaluateJavaScriptSync(webView.page(), "document.getElementById('submit_button').focus()");
+ QTRY_COMPARE(evaluateJavaScriptSync(webView.page(), "document.activeElement.id").toString(), QStringLiteral("submit_button"));
+ QTest::sendKeyEvent(QTest::Press, webView.focusProxy(), Qt::Key_Y, 'y', Qt::NoModifier);
+ QTest::sendKeyEvent(QTest::Release, webView.focusProxy(), Qt::Key_Y, 'y', Qt::NoModifier);
+ QTRY_COMPARE(parentWidget.releaseEvents.size(), 4);
+
// The page will consume the Tab key to change focus between elements while the arrow
// keys won't be used.
- QCOMPARE(parentWidget.pressEvents.size(), 2);
+ QCOMPARE(parentWidget.pressEvents.size(), 3);
QCOMPARE(parentWidget.pressEvents[0].key(), (int)Qt::Key_Right);
QCOMPARE(parentWidget.pressEvents[1].key(), (int)Qt::Key_Left);
+ QCOMPARE(parentWidget.pressEvents[2].key(), (int)Qt::Key_Y);
// Key releases will all come back unconsumed.
QCOMPARE(parentWidget.releaseEvents[0].key(), (int)Qt::Key_Right);
QCOMPARE(parentWidget.releaseEvents[1].key(), (int)Qt::Key_Tab);
QCOMPARE(parentWidget.releaseEvents[2].key(), (int)Qt::Key_Left);
+ QCOMPARE(parentWidget.releaseEvents[3].key(), (int)Qt::Key_Y);
}
void tst_QWebEngineView::horizontalScrollbarTest()