summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-06-18 14:18:28 +0200
committerAllan Sandfeld Jensen <allan.jensen@digia.com>2014-06-18 15:54:52 +0200
commit70c2f166453ed11c9e0b28614d48cf8702295c9e (patch)
tree58558a2845a84c419656079af25d060302d78d2e
parentd98d99347079368fcd1fea5a1cb12ff68f1d0004 (diff)
Fix keyboard scrolling
Arrow keys and page-up/page-down was not working. These are detected on RayKeyDown events which both the Win and GTK versions sends instead of KeyDown. Also fixes a mistake in reading the length of the UTF16 text string that was using sizeof on a pointer. Change-Id: I441ef21c15430dafcaeda00d43eb9aec81cd88b8 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-rw-r--r--src/core/render_widget_host_view_qt.cpp7
-rw-r--r--src/core/web_event_factory.cpp6
2 files changed, 10 insertions, 3 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 18eabd5c0..386783f88 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -885,7 +885,12 @@ void RenderWidgetHostViewQt::handleMouseEvent(QMouseEvent* event)
void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
{
- m_host->ForwardKeyboardEvent(WebEventFactory::toWebKeyboardEvent(ev));
+ content::NativeWebKeyboardEvent webEvent = WebEventFactory::toWebKeyboardEvent(ev);
+ m_host->ForwardKeyboardEvent(webEvent);
+ if (webEvent.type == blink::WebInputEvent::RawKeyDown && !ev->text().isEmpty()) {
+ webEvent.type = blink::WebInputEvent::Char;
+ m_host->ForwardKeyboardEvent(webEvent);
+ }
}
void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev)
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index 544ac83f6..d8be15e10 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -508,7 +508,7 @@ static WebInputEvent::Type webEventTypeForEvent(const QEvent* event)
case QEvent::Wheel:
return WebInputEvent::MouseWheel;
case QEvent::KeyPress:
- return WebInputEvent::KeyDown;
+ return WebInputEvent::RawKeyDown;
case QEvent::KeyRelease:
return WebInputEvent::KeyUp;
case QEvent::HoverMove:
@@ -600,6 +600,8 @@ content::NativeWebKeyboardEvent WebEventFactory::toWebKeyboardEvent(QKeyEvent *e
webKitEvent.windowsKeyCode = windowsKeyCodeForKeyEvent(ev->key(), ev->modifiers() & Qt::KeypadModifier);
webKitEvent.setKeyIdentifierFromWindowsKeyCode();
- memcpy(&webKitEvent.text, ev->text().utf16(), qMin(sizeof(webKitEvent.text), sizeof(ev->text().utf16())));
+ const ushort* text = ev->text().utf16();
+ memcpy(&webKitEvent.text, text, std::min(sizeof(webKitEvent.text), size_t(ev->text().length() * 2)));
+ memcpy(&webKitEvent.unmodifiedText, text, std::min(sizeof(webKitEvent.unmodifiedText), size_t(ev->text().length() * 2)));
return webKitEvent;
}