| 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 |