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_controller.h" | 5 #include "ash/accelerators/accelerator_controller.h" |
6 | 6 |
7 #include "ash/accelerators/accelerator_table.h" | 7 #include "ash/accelerators/accelerator_table.h" |
8 #include "ash/ash_switches.h" | 8 #include "ash/ash_switches.h" |
9 #include "ash/caps_lock_delegate.h" | 9 #include "ash/caps_lock_delegate.h" |
10 #include "ash/desktop_background/desktop_background_controller.h" | 10 #include "ash/desktop_background/desktop_background_controller.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 | 182 |
183 AcceleratorController::AcceleratorController() | 183 AcceleratorController::AcceleratorController() |
184 : accelerator_manager_(new ui::AcceleratorManager) { | 184 : accelerator_manager_(new ui::AcceleratorManager) { |
185 Init(); | 185 Init(); |
186 } | 186 } |
187 | 187 |
188 AcceleratorController::~AcceleratorController() { | 188 AcceleratorController::~AcceleratorController() { |
189 } | 189 } |
190 | 190 |
191 void AcceleratorController::Init() { | 191 void AcceleratorController::Init() { |
192 for (size_t i = 0; i < kActionsAllowedAtLoginScreenLength; ++i) { | 192 for (size_t i = 0; i < kActionsAllowedAtLoginOrLockScreenLength; ++i) { |
193 actions_allowed_at_login_screen_.insert(kActionsAllowedAtLoginScreen[i]); | 193 actions_allowed_at_login_screen_.insert( |
| 194 kActionsAllowedAtLoginOrLockScreen[i]); |
| 195 actions_allowed_at_lock_screen_.insert( |
| 196 kActionsAllowedAtLoginOrLockScreen[i]); |
| 197 } |
| 198 for (size_t i = 0; i < kActionsAllowedAtLockScreenLength; ++i) { |
| 199 actions_allowed_at_lock_screen_.insert(kActionsAllowedAtLockScreen[i]); |
194 } | 200 } |
195 | 201 |
196 for (size_t i = 0; i < kAcceleratorDataLength; ++i) { | 202 for (size_t i = 0; i < kAcceleratorDataLength; ++i) { |
197 ui::Accelerator accelerator(kAcceleratorData[i].keycode, | 203 ui::Accelerator accelerator(kAcceleratorData[i].keycode, |
198 kAcceleratorData[i].modifiers); | 204 kAcceleratorData[i].modifiers); |
199 accelerator.set_type(kAcceleratorData[i].trigger_on_press ? | 205 accelerator.set_type(kAcceleratorData[i].trigger_on_press ? |
200 ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED); | 206 ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED); |
201 Register(accelerator, this); | 207 Register(accelerator, this); |
202 accelerators_.insert( | 208 accelerators_.insert( |
203 std::make_pair(accelerator, kAcceleratorData[i].action)); | 209 std::make_pair(accelerator, kAcceleratorData[i].action)); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 // AcceleratorController, ui::AcceleratorTarget implementation: | 264 // AcceleratorController, ui::AcceleratorTarget implementation: |
259 | 265 |
260 bool AcceleratorController::AcceleratorPressed( | 266 bool AcceleratorController::AcceleratorPressed( |
261 const ui::Accelerator& accelerator) { | 267 const ui::Accelerator& accelerator) { |
262 std::map<ui::Accelerator, int>::const_iterator it = | 268 std::map<ui::Accelerator, int>::const_iterator it = |
263 accelerators_.find(accelerator); | 269 accelerators_.find(accelerator); |
264 DCHECK(it != accelerators_.end()); | 270 DCHECK(it != accelerators_.end()); |
265 AcceleratorAction action = static_cast<AcceleratorAction>(it->second); | 271 AcceleratorAction action = static_cast<AcceleratorAction>(it->second); |
266 | 272 |
267 ash::Shell* shell = ash::Shell::GetInstance(); | 273 ash::Shell* shell = ash::Shell::GetInstance(); |
| 274 bool at_login_screen = false; |
268 #if defined(OS_CHROMEOS) | 275 #if defined(OS_CHROMEOS) |
269 bool at_login_screen = shell->IsScreenLocked() || | 276 at_login_screen = (shell->delegate() && !shell->delegate()->IsUserLoggedIn()); |
270 (shell->delegate() && !shell->delegate()->IsUserLoggedIn()); | 277 #endif |
271 #else | 278 bool at_lock_screen = shell->IsScreenLocked(); |
272 bool at_login_screen = shell->IsScreenLocked(); | |
273 #endif // OS_CHROMEOS | |
274 | 279 |
275 if (at_login_screen && | 280 if (at_login_screen && |
276 actions_allowed_at_login_screen_.find(action) == | 281 actions_allowed_at_login_screen_.find(action) == |
277 actions_allowed_at_login_screen_.end()) { | 282 actions_allowed_at_login_screen_.end()) { |
278 return false; | 283 return false; |
279 } | 284 } |
| 285 if (at_lock_screen && |
| 286 actions_allowed_at_lock_screen_.find(action) == |
| 287 actions_allowed_at_lock_screen_.end()) { |
| 288 return false; |
| 289 } |
280 | 290 |
281 switch (action) { | 291 switch (action) { |
282 case CYCLE_BACKWARD_MRU: | 292 case CYCLE_BACKWARD_MRU: |
283 return HandleCycleWindowMRU(WindowCycleController::BACKWARD, | 293 return HandleCycleWindowMRU(WindowCycleController::BACKWARD, |
284 accelerator.IsAltDown()); | 294 accelerator.IsAltDown()); |
285 case CYCLE_FORWARD_MRU: | 295 case CYCLE_FORWARD_MRU: |
286 return HandleCycleWindowMRU(WindowCycleController::FORWARD, | 296 return HandleCycleWindowMRU(WindowCycleController::FORWARD, |
287 accelerator.IsAltDown()); | 297 accelerator.IsAltDown()); |
288 case CYCLE_BACKWARD_LINEAR: | 298 case CYCLE_BACKWARD_LINEAR: |
289 HandleCycleWindowLinear(CYCLE_BACKWARD); | 299 HandleCycleWindowLinear(CYCLE_BACKWARD); |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 // Then set this one as active. | 513 // Then set this one as active. |
504 Shell::GetInstance()->launcher()->ActivateLauncherItem(found_index); | 514 Shell::GetInstance()->launcher()->ActivateLauncherItem(found_index); |
505 } | 515 } |
506 } | 516 } |
507 | 517 |
508 bool AcceleratorController::CanHandleAccelerators() const { | 518 bool AcceleratorController::CanHandleAccelerators() const { |
509 return true; | 519 return true; |
510 } | 520 } |
511 | 521 |
512 } // namespace ash | 522 } // namespace ash |
OLD | NEW |