diff options
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 5 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 11 |
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() |