OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/accelerators/accelerator_dispatcher.h" | 5 #include "ash/accelerators/accelerator_dispatcher.h" |
6 | 6 |
7 #if defined(USE_X11) | 7 #if defined(USE_X11) |
8 #include <X11/Xlib.h> | 8 #include <X11/Xlib.h> |
9 | 9 |
10 // Xlib defines RootWindow | 10 // Xlib defines RootWindow |
11 #ifdef RootWindow | 11 #ifdef RootWindow |
12 #undef RootWindow | 12 #undef RootWindow |
13 #endif | 13 #endif |
14 #endif // defined(USE_X11) | 14 #endif // defined(USE_X11) |
15 | 15 |
16 #include "ash/accelerators/accelerator_controller.h" | 16 #include "ash/accelerators/accelerator_controller.h" |
17 #include "ash/shell.h" | 17 #include "ash/shell.h" |
18 #include "ash/wm/event_rewriter_event_filter.h" | 18 #include "ash/wm/event_rewriter_event_filter.h" |
19 #include "ui/aura/env.h" | 19 #include "ui/aura/env.h" |
20 #include "ui/aura/event.h" | |
21 #include "ui/aura/event_filter.h" | 20 #include "ui/aura/event_filter.h" |
22 #include "ui/aura/root_window.h" | 21 #include "ui/aura/root_window.h" |
23 #include "ui/base/accelerators/accelerator.h" | 22 #include "ui/base/accelerators/accelerator.h" |
| 23 #include "ui/base/event.h" |
24 #include "ui/base/events.h" | 24 #include "ui/base/events.h" |
25 | 25 |
26 namespace ash { | 26 namespace ash { |
27 namespace { | 27 namespace { |
28 | 28 |
29 const int kModifierMask = (ui::EF_SHIFT_DOWN | | 29 const int kModifierMask = (ui::EF_SHIFT_DOWN | |
30 ui::EF_CONTROL_DOWN | | 30 ui::EF_CONTROL_DOWN | |
31 ui::EF_ALT_DOWN); | 31 ui::EF_ALT_DOWN); |
32 #if defined(OS_WIN) | 32 #if defined(OS_WIN) |
33 bool IsKeyEvent(const MSG& msg) { | 33 bool IsKeyEvent(const MSG& msg) { |
(...skipping 29 matching lines...) Expand all Loading... |
63 | 63 |
64 bool AcceleratorDispatcher::Dispatch(const base::NativeEvent& event) { | 64 bool AcceleratorDispatcher::Dispatch(const base::NativeEvent& event) { |
65 if (!associated_window_) | 65 if (!associated_window_) |
66 return false; | 66 return false; |
67 if (!ui::IsNoopEvent(event) && !associated_window_->CanReceiveEvents()) | 67 if (!ui::IsNoopEvent(event) && !associated_window_->CanReceiveEvents()) |
68 return aura::Env::GetInstance()->GetDispatcher()->Dispatch(event); | 68 return aura::Env::GetInstance()->GetDispatcher()->Dispatch(event); |
69 | 69 |
70 if (IsKeyEvent(event)) { | 70 if (IsKeyEvent(event)) { |
71 // Modifiers can be changed by the user preference, so we need to rewrite | 71 // Modifiers can be changed by the user preference, so we need to rewrite |
72 // the event explicitly. | 72 // the event explicitly. |
73 aura::KeyEvent key_event(event, false); | 73 ui::KeyEvent key_event(event, false); |
74 aura::EventFilter* event_rewriter = | 74 aura::EventFilter* event_rewriter = |
75 ash::Shell::GetInstance()->event_rewriter_filter(); | 75 ash::Shell::GetInstance()->event_rewriter_filter(); |
76 DCHECK(event_rewriter); | 76 DCHECK(event_rewriter); |
77 if (event_rewriter->PreHandleKeyEvent(associated_window_, &key_event)) | 77 if (event_rewriter->PreHandleKeyEvent(associated_window_, &key_event)) |
78 return true; | 78 return true; |
79 | 79 |
80 ash::AcceleratorController* accelerator_controller = | 80 ash::AcceleratorController* accelerator_controller = |
81 ash::Shell::GetInstance()->accelerator_controller(); | 81 ash::Shell::GetInstance()->accelerator_controller(); |
82 if (accelerator_controller) { | 82 if (accelerator_controller) { |
83 ui::Accelerator accelerator(key_event.key_code(), | 83 ui::Accelerator accelerator(key_event.key_code(), |
84 key_event.flags() & kModifierMask); | 84 key_event.flags() & kModifierMask); |
85 if (key_event.type() == ui::ET_KEY_RELEASED) | 85 if (key_event.type() == ui::ET_KEY_RELEASED) |
86 accelerator.set_type(ui::ET_KEY_RELEASED); | 86 accelerator.set_type(ui::ET_KEY_RELEASED); |
87 if (accelerator_controller->Process(accelerator)) | 87 if (accelerator_controller->Process(accelerator)) |
88 return true; | 88 return true; |
89 } | 89 } |
90 | 90 |
91 return nested_dispatcher_->Dispatch(key_event.native_event()); | 91 return nested_dispatcher_->Dispatch(key_event.native_event()); |
92 } | 92 } |
93 | 93 |
94 return nested_dispatcher_->Dispatch(event); | 94 return nested_dispatcher_->Dispatch(event); |
95 } | 95 } |
96 | 96 |
97 } // namespace ash | 97 } // namespace ash |
OLD | NEW |