diff options
author | cpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-02 00:19:45 +0000 |
---|---|---|
committer | cpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-02 00:19:45 +0000 |
commit | 11e45efce9cc17e1b2b76e6a636cc63b2c021324 (patch) | |
tree | 34ca44e268f04034943a6ef2718874f1ba903ab7 | |
parent | c356dc8972b1b0578e3e016de4ee56a62a5a02aa (diff) | |
download | chromium_src-11e45efce9cc17e1b2b76e6a636cc63b2c021324.zip chromium_src-11e45efce9cc17e1b2b76e6a636cc63b2c021324.tar.gz chromium_src-11e45efce9cc17e1b2b76e6a636cc63b2c021324.tar.bz2 |
Allow accelerators to work on Windows Ash mode
We had 3 issues
1- NativeKeyboardEvent had skip_in_browser = true hardcoded so
when the event comes back from the renderer we ignore it
2- NativeKeyboardEvent was constructed in a way that ctrl-f would have
the wrong keycode
3- The unhandled keyboard event handler assumed that the ui event had
an inner native MSG which is not the case for ash so we would crash
on say F10.
BUG=173572
TEST=see bug
Review URL: https://codereview.chromium.org/12082112
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180210 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 6 insertions, 8 deletions
diff --git a/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc b/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc index d8728d3..39df86a 100644 --- a/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc +++ b/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc @@ -56,6 +56,8 @@ void UnhandledKeyboardEventHandler::HandleKeyboardEvent( // Any unhandled keyboard/character messages should be defproced. // This allows stuff like F10, etc to work correctly. #if defined(USE_AURA) + if (!event.os_event) + return; const MSG& message(event.os_event->native_event()); #else const MSG& message(event.os_event); diff --git a/content/browser/renderer_host/native_web_keyboard_event_aura.cc b/content/browser/renderer_host/native_web_keyboard_event_aura.cc index 2fb3f24..1658d8d 100644 --- a/content/browser/renderer_host/native_web_keyboard_event_aura.cc +++ b/content/browser/renderer_host/native_web_keyboard_event_aura.cc @@ -58,7 +58,7 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent( int state, double time_stamp_seconds) : os_event(NULL), - skip_in_browser(true /* already handled by the input method */) { + skip_in_browser(false) { switch (key_event_type) { case ui::ET_KEY_PRESSED: type = is_char ? WebKit::WebInputEvent::Char : diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index 7932089..914b155 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -1479,16 +1479,12 @@ void RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) { } else { // We don't have to communicate with an input method here. if (!event->HasNativeEvent()) { - // Send a fabricated event, which is usually a VKEY_PROCESSKEY IME event. - // For keys like VK_BACK/VK_LEFT, etc we need to send the raw keycode to - // the renderer. - double now = ui::EventTimeForNow().InSecondsF(); NativeWebKeyboardEvent webkit_event( event->type(), - false /* is_char */, - event->GetCharacter() ? event->GetCharacter() : event->key_code(), + event->is_char(), + event->is_char() ? event->GetCharacter() : event->key_code(), event->flags(), - now); + ui::EventTimeForNow().InSecondsF()); host_->ForwardKeyboardEvent(webkit_event); } else { NativeWebKeyboardEvent webkit_event(event); |