Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: chrome/browser/ui/views/unhandled_keyboard_event_handler_aurax11.cc

Issue 8907029: AURA/X11: Handle VKEY_MENU accelerator on content area (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/unhandled_keyboard_event_handler.h"
6
7 #include "base/logging.h"
8 #include "content/public/browser/native_web_keyboard_event.h"
9 #include "ui/aura/event.h"
10 #include "ui/views/focus/focus_manager.h"
11
12 namespace {
13
14 using WebKit::WebInputEvent;
15
16 // TODO(oshima): Use NativeWebKeyboardEvent.os_event to convert to Views event
17 // and remove the following functions.
18
19 // Convert WebKi'ts event type to Views event type.
20 ui::EventType GetEventType(const NativeWebKeyboardEvent& event) {
21 switch (event.type) {
22 case WebInputEvent::RawKeyDown:
23 case WebInputEvent::KeyDown:
24 case WebInputEvent::Char:
25 return ui::ET_KEY_PRESSED;
26 case WebInputEvent::KeyUp:
27 return ui::ET_KEY_RELEASED;
28 default:
29 NOTREACHED() << "Unknown event type:" << event.type;
30 return ui::ET_UNKNOWN;
31 }
32 }
33
34 // Converts WebKit's modifiers to View's event flag.
35 ui::EventFlags ConvertModifier(const NativeWebKeyboardEvent& event,
36 WebInputEvent::Modifiers modifier,
37 ui::EventFlags flag) {
38 return event.modifiers & modifier ? flag : static_cast<ui::EventFlags>(0);
39 }
40
41 int GetEventFlag(const NativeWebKeyboardEvent& event) {
42 return
43 ConvertModifier(event, WebInputEvent::ShiftKey, ui::EF_SHIFT_DOWN) |
44 ConvertModifier(event, WebInputEvent::ControlKey, ui::EF_CONTROL_DOWN) |
45 ConvertModifier(event, WebInputEvent::AltKey, ui::EF_ALT_DOWN) |
46 ConvertModifier(
47 event, WebInputEvent::LeftButtonDown, ui::EF_LEFT_BUTTON_DOWN) |
48 ConvertModifier(
49 event, WebInputEvent::MiddleButtonDown, ui::EF_MIDDLE_BUTTON_DOWN) |
50 ConvertModifier(
51 event, WebInputEvent::RightButtonDown, ui::EF_RIGHT_BUTTON_DOWN) |
52 ConvertModifier(event, WebInputEvent::CapsLockOn, ui::EF_CAPS_LOCK_DOWN);
53 }
54
55 } // namespace
56
57 UnhandledKeyboardEventHandler::UnhandledKeyboardEventHandler() {
58 }
59
60 void UnhandledKeyboardEventHandler::HandleKeyboardEvent(
61 const NativeWebKeyboardEvent& event,
62 views::FocusManager* focus_manager) {
63 if (!focus_manager) {
64 NOTREACHED();
65 return;
66 }
67 if (event.os_event && !event.skip_in_browser) {
68 // The instance of event.os_event is not copied right now and
69 // cannot be used here. Convert NativeWebKeyboardEvent for now.
70 // TODO(oshima): Fix NativeWebKeyboardEvent so that we can
71 // use |KeyEvent(const NativeEvent)| constructor.
oshima 2011/12/16 00:34:37 I'm working on NativeWebKeyboard fix in separate C
72 views::KeyEvent views_event(
73 GetEventType(event),
74 static_cast<ui::KeyboardCode>(event.windowsKeyCode),
75 GetEventFlag(event));
76 focus_manager->OnKeyEvent(views_event);
77 }
78 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698