summaryrefslogtreecommitdiffstats
path: root/src/core/render_widget_host_view_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/render_widget_host_view_qt.cpp')
-rw-r--r--src/core/render_widget_host_view_qt.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index bf4d5bf37..3741d8876 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -880,10 +880,17 @@ void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
UnlockMouse();
content::NativeWebKeyboardEvent webEvent = WebEventFactory::toWebKeyboardEvent(ev);
- m_host->ForwardKeyboardEvent(webEvent);
if (webEvent.type == blink::WebInputEvent::RawKeyDown && !ev->text().isEmpty()) {
+ // 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;
+ m_host->ForwardKeyboardEvent(webEvent);
+
+ webEvent.skip_in_browser = false;
webEvent.type = blink::WebInputEvent::Char;
m_host->ForwardKeyboardEvent(webEvent);
+ } else {
+ m_host->ForwardKeyboardEvent(webEvent);
}
}