OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/wm/sticky_keys.h" | 5 #include "ash/sticky_keys/sticky_keys_controller.h" |
6 | 6 |
7 #if defined(USE_X11) | 7 #if defined(USE_X11) |
8 #include <X11/extensions/XInput2.h> | 8 #include <X11/extensions/XInput2.h> |
9 #include <X11/Xlib.h> | 9 #include <X11/Xlib.h> |
10 #undef RootWindow | 10 #undef RootWindow |
11 #endif | 11 #endif |
12 | 12 |
13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
14 #include "base/debug/stack_trace.h" | 14 #include "base/debug/stack_trace.h" |
15 #include "ui/aura/root_window.h" | 15 #include "ui/aura/root_window.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 aura::Window* target) { | 81 aura::Window* target) { |
82 DCHECK(target); | 82 DCHECK(target); |
83 target->GetDispatcher()->AsRootWindowHostDelegate() | 83 target->GetDispatcher()->AsRootWindowHostDelegate() |
84 ->OnHostScrollEvent(event); | 84 ->OnHostScrollEvent(event); |
85 } | 85 } |
86 | 86 |
87 } // namespace | 87 } // namespace |
88 | 88 |
89 /////////////////////////////////////////////////////////////////////////////// | 89 /////////////////////////////////////////////////////////////////////////////// |
90 // StickyKeys | 90 // StickyKeys |
91 StickyKeys::StickyKeys() | 91 StickyKeysController::StickyKeysController() |
92 : enabled_(false), | 92 : enabled_(false), |
93 shift_sticky_key_( | 93 shift_sticky_key_( |
94 new StickyKeysHandler(ui::EF_SHIFT_DOWN, | 94 new StickyKeysHandler(ui::EF_SHIFT_DOWN, |
95 new StickyKeysHandlerDelegateImpl())), | 95 new StickyKeysHandlerDelegateImpl())), |
96 alt_sticky_key_( | 96 alt_sticky_key_( |
97 new StickyKeysHandler(ui::EF_ALT_DOWN, | 97 new StickyKeysHandler(ui::EF_ALT_DOWN, |
98 new StickyKeysHandlerDelegateImpl())), | 98 new StickyKeysHandlerDelegateImpl())), |
99 ctrl_sticky_key_( | 99 ctrl_sticky_key_( |
100 new StickyKeysHandler(ui::EF_CONTROL_DOWN, | 100 new StickyKeysHandler(ui::EF_CONTROL_DOWN, |
101 new StickyKeysHandlerDelegateImpl())) { | 101 new StickyKeysHandlerDelegateImpl())) { |
102 } | 102 } |
103 | 103 |
104 StickyKeys::~StickyKeys() { | 104 StickyKeysController::~StickyKeysController() { |
105 } | 105 } |
106 | 106 |
107 void StickyKeys::Enable(bool enabled) { | 107 void StickyKeysController::Enable(bool enabled) { |
108 if (enabled_ != enabled) { | 108 if (enabled_ != enabled) { |
109 enabled_ = enabled; | 109 enabled_ = enabled; |
110 | 110 |
111 // Reset key handlers when activating sticky keys to ensure all | 111 // Reset key handlers when activating sticky keys to ensure all |
112 // the handlers' states are reset. | 112 // the handlers' states are reset. |
113 if (enabled_) { | 113 if (enabled_) { |
114 shift_sticky_key_.reset( | 114 shift_sticky_key_.reset( |
115 new StickyKeysHandler(ui::EF_SHIFT_DOWN, | 115 new StickyKeysHandler(ui::EF_SHIFT_DOWN, |
116 new StickyKeysHandlerDelegateImpl())); | 116 new StickyKeysHandlerDelegateImpl())); |
117 alt_sticky_key_.reset( | 117 alt_sticky_key_.reset( |
118 new StickyKeysHandler(ui::EF_ALT_DOWN, | 118 new StickyKeysHandler(ui::EF_ALT_DOWN, |
119 new StickyKeysHandlerDelegateImpl())); | 119 new StickyKeysHandlerDelegateImpl())); |
120 ctrl_sticky_key_.reset( | 120 ctrl_sticky_key_.reset( |
121 new StickyKeysHandler(ui::EF_CONTROL_DOWN, | 121 new StickyKeysHandler(ui::EF_CONTROL_DOWN, |
122 new StickyKeysHandlerDelegateImpl())); | 122 new StickyKeysHandlerDelegateImpl())); |
123 } | 123 } |
124 } | 124 } |
125 } | 125 } |
126 | 126 |
127 bool StickyKeys::HandleKeyEvent(ui::KeyEvent* event) { | 127 bool StickyKeysController::HandleKeyEvent(ui::KeyEvent* event) { |
128 return shift_sticky_key_->HandleKeyEvent(event) || | 128 return shift_sticky_key_->HandleKeyEvent(event) || |
129 alt_sticky_key_->HandleKeyEvent(event) || | 129 alt_sticky_key_->HandleKeyEvent(event) || |
130 ctrl_sticky_key_->HandleKeyEvent(event); | 130 ctrl_sticky_key_->HandleKeyEvent(event); |
131 return ctrl_sticky_key_->HandleKeyEvent(event); | 131 return ctrl_sticky_key_->HandleKeyEvent(event); |
132 } | 132 } |
133 | 133 |
134 bool StickyKeys::HandleMouseEvent(ui::MouseEvent* event) { | 134 bool StickyKeysController::HandleMouseEvent(ui::MouseEvent* event) { |
135 return shift_sticky_key_->HandleMouseEvent(event) || | 135 return shift_sticky_key_->HandleMouseEvent(event) || |
136 alt_sticky_key_->HandleMouseEvent(event) || | 136 alt_sticky_key_->HandleMouseEvent(event) || |
137 ctrl_sticky_key_->HandleMouseEvent(event); | 137 ctrl_sticky_key_->HandleMouseEvent(event); |
138 } | 138 } |
139 | 139 |
140 bool StickyKeys::HandleScrollEvent(ui::ScrollEvent* event) { | 140 bool StickyKeysController::HandleScrollEvent(ui::ScrollEvent* event) { |
141 return shift_sticky_key_->HandleScrollEvent(event) || | 141 return shift_sticky_key_->HandleScrollEvent(event) || |
142 alt_sticky_key_->HandleScrollEvent(event) || | 142 alt_sticky_key_->HandleScrollEvent(event) || |
143 ctrl_sticky_key_->HandleScrollEvent(event); | 143 ctrl_sticky_key_->HandleScrollEvent(event); |
144 } | 144 } |
145 | 145 |
146 void StickyKeys::OnKeyEvent(ui::KeyEvent* event) { | 146 void StickyKeysController::OnKeyEvent(ui::KeyEvent* event) { |
147 // Do not consume a translated key event which is generated by an IME. | 147 // Do not consume a translated key event which is generated by an IME. |
148 if (event->type() == ui::ET_TRANSLATED_KEY_PRESS || | 148 if (event->type() == ui::ET_TRANSLATED_KEY_PRESS || |
149 event->type() == ui::ET_TRANSLATED_KEY_RELEASE) { | 149 event->type() == ui::ET_TRANSLATED_KEY_RELEASE) { |
150 return; | 150 return; |
151 } | 151 } |
152 | 152 |
153 if (enabled_ && HandleKeyEvent(event)) | 153 if (enabled_ && HandleKeyEvent(event)) |
154 event->StopPropagation(); | 154 event->StopPropagation(); |
155 } | 155 } |
156 | 156 |
157 void StickyKeys::OnMouseEvent(ui::MouseEvent* event) { | 157 void StickyKeysController::OnMouseEvent(ui::MouseEvent* event) { |
158 if (enabled_ && HandleMouseEvent(event)) | 158 if (enabled_ && HandleMouseEvent(event)) |
159 event->StopPropagation(); | 159 event->StopPropagation(); |
160 } | 160 } |
161 | 161 |
162 void StickyKeys::OnScrollEvent(ui::ScrollEvent* event) { | 162 void StickyKeysController::OnScrollEvent(ui::ScrollEvent* event) { |
163 if (enabled_ && HandleScrollEvent(event)) | 163 if (enabled_ && HandleScrollEvent(event)) |
164 event->StopPropagation(); | 164 event->StopPropagation(); |
165 } | 165 } |
166 | 166 |
167 /////////////////////////////////////////////////////////////////////////////// | 167 /////////////////////////////////////////////////////////////////////////////// |
168 // StickyKeysHandler | 168 // StickyKeysHandler |
169 StickyKeysHandler::StickyKeysHandler(ui::EventFlags target_modifier_flag, | 169 StickyKeysHandler::StickyKeysHandler(ui::EventFlags target_modifier_flag, |
170 StickyKeysHandlerDelegate* delegate) | 170 StickyKeysHandlerDelegate* delegate) |
171 : modifier_flag_(target_modifier_flag), | 171 : modifier_flag_(target_modifier_flag), |
172 current_state_(DISABLED), | 172 current_state_(DISABLED), |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 &xievent->mods.effective)); | 436 &xievent->mods.effective)); |
437 } | 437 } |
438 } | 438 } |
439 #elif defined(USE_OZONE) | 439 #elif defined(USE_OZONE) |
440 NOTIMPLEMENTED() << "Modifier key is not handled"; | 440 NOTIMPLEMENTED() << "Modifier key is not handled"; |
441 #endif | 441 #endif |
442 event->set_flags(event->flags() | modifier_flag_); | 442 event->set_flags(event->flags() | modifier_flag_); |
443 } | 443 } |
444 | 444 |
445 } // namespace ash | 445 } // namespace ash |
OLD | NEW |