| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 "views/focus/focus_manager.h" | 5 #include "views/focus/focus_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 FocusSearch::DOWN, | 350 FocusSearch::DOWN, |
| 351 false, | 351 false, |
| 352 &new_focus_traversable, | 352 &new_focus_traversable, |
| 353 &new_starting_view); | 353 &new_starting_view); |
| 354 } | 354 } |
| 355 return v; | 355 return v; |
| 356 } | 356 } |
| 357 | 357 |
| 358 void FocusManager::RegisterAccelerator( | 358 void FocusManager::RegisterAccelerator( |
| 359 const Accelerator& accelerator, | 359 const Accelerator& accelerator, |
| 360 AcceleratorTarget* target) { | 360 ui::AcceleratorTarget* target) { |
| 361 AcceleratorTargetList& targets = accelerators_[accelerator]; | 361 AcceleratorTargetList& targets = accelerators_[accelerator]; |
| 362 DCHECK(std::find(targets.begin(), targets.end(), target) == targets.end()) | 362 DCHECK(std::find(targets.begin(), targets.end(), target) == targets.end()) |
| 363 << "Registering the same target multiple times"; | 363 << "Registering the same target multiple times"; |
| 364 targets.push_front(target); | 364 targets.push_front(target); |
| 365 } | 365 } |
| 366 | 366 |
| 367 void FocusManager::UnregisterAccelerator(const Accelerator& accelerator, | 367 void FocusManager::UnregisterAccelerator(const Accelerator& accelerator, |
| 368 AcceleratorTarget* target) { | 368 ui::AcceleratorTarget* target) { |
| 369 AcceleratorMap::iterator map_iter = accelerators_.find(accelerator); | 369 AcceleratorMap::iterator map_iter = accelerators_.find(accelerator); |
| 370 if (map_iter == accelerators_.end()) { | 370 if (map_iter == accelerators_.end()) { |
| 371 NOTREACHED() << "Unregistering non-existing accelerator"; | 371 NOTREACHED() << "Unregistering non-existing accelerator"; |
| 372 return; | 372 return; |
| 373 } | 373 } |
| 374 | 374 |
| 375 AcceleratorTargetList* targets = &map_iter->second; | 375 AcceleratorTargetList* targets = &map_iter->second; |
| 376 AcceleratorTargetList::iterator target_iter = | 376 AcceleratorTargetList::iterator target_iter = |
| 377 std::find(targets->begin(), targets->end(), target); | 377 std::find(targets->begin(), targets->end(), target); |
| 378 if (target_iter == targets->end()) { | 378 if (target_iter == targets->end()) { |
| 379 NOTREACHED() << "Unregistering accelerator for wrong target"; | 379 NOTREACHED() << "Unregistering accelerator for wrong target"; |
| 380 return; | 380 return; |
| 381 } | 381 } |
| 382 | 382 |
| 383 targets->erase(target_iter); | 383 targets->erase(target_iter); |
| 384 } | 384 } |
| 385 | 385 |
| 386 void FocusManager::UnregisterAccelerators(AcceleratorTarget* target) { | 386 void FocusManager::UnregisterAccelerators(ui::AcceleratorTarget* target) { |
| 387 for (AcceleratorMap::iterator map_iter = accelerators_.begin(); | 387 for (AcceleratorMap::iterator map_iter = accelerators_.begin(); |
| 388 map_iter != accelerators_.end(); ++map_iter) { | 388 map_iter != accelerators_.end(); ++map_iter) { |
| 389 AcceleratorTargetList* targets = &map_iter->second; | 389 AcceleratorTargetList* targets = &map_iter->second; |
| 390 targets->remove(target); | 390 targets->remove(target); |
| 391 } | 391 } |
| 392 } | 392 } |
| 393 | 393 |
| 394 bool FocusManager::ProcessAccelerator(const Accelerator& accelerator) { | 394 bool FocusManager::ProcessAccelerator(const Accelerator& accelerator) { |
| 395 AcceleratorMap::iterator map_iter = accelerators_.find(accelerator); | 395 AcceleratorMap::iterator map_iter = accelerators_.find(accelerator); |
| 396 if (map_iter != accelerators_.end()) { | 396 if (map_iter != accelerators_.end()) { |
| 397 // We have to copy the target list here, because an AcceleratorPressed | 397 // We have to copy the target list here, because an AcceleratorPressed |
| 398 // event handler may modify the list. | 398 // event handler may modify the list. |
| 399 AcceleratorTargetList targets(map_iter->second); | 399 AcceleratorTargetList targets(map_iter->second); |
| 400 for (AcceleratorTargetList::iterator iter = targets.begin(); | 400 for (AcceleratorTargetList::iterator iter = targets.begin(); |
| 401 iter != targets.end(); ++iter) { | 401 iter != targets.end(); ++iter) { |
| 402 if ((*iter)->AcceleratorPressed(accelerator)) | 402 if ((*iter)->AcceleratorPressed(accelerator)) |
| 403 return true; | 403 return true; |
| 404 } | 404 } |
| 405 } | 405 } |
| 406 return false; | 406 return false; |
| 407 } | 407 } |
| 408 | 408 |
| 409 AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator( | 409 ui::AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator( |
| 410 const views::Accelerator& accelerator) const { | 410 const views::Accelerator& accelerator) const { |
| 411 AcceleratorMap::const_iterator map_iter = accelerators_.find(accelerator); | 411 AcceleratorMap::const_iterator map_iter = accelerators_.find(accelerator); |
| 412 if (map_iter == accelerators_.end() || map_iter->second.empty()) | 412 if (map_iter == accelerators_.end() || map_iter->second.empty()) |
| 413 return NULL; | 413 return NULL; |
| 414 return map_iter->second.front(); | 414 return map_iter->second.front(); |
| 415 } | 415 } |
| 416 | 416 |
| 417 void FocusManager::FocusNativeView(gfx::NativeView native_view) { | 417 void FocusManager::FocusNativeView(gfx::NativeView native_view) { |
| 418 widget_->FocusNativeView(native_view); | 418 widget_->FocusNativeView(native_view); |
| 419 } | 419 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 434 | 434 |
| 435 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { | 435 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { |
| 436 focus_change_listeners_.AddObserver(listener); | 436 focus_change_listeners_.AddObserver(listener); |
| 437 } | 437 } |
| 438 | 438 |
| 439 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { | 439 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { |
| 440 focus_change_listeners_.RemoveObserver(listener); | 440 focus_change_listeners_.RemoveObserver(listener); |
| 441 } | 441 } |
| 442 | 442 |
| 443 } // namespace views | 443 } // namespace views |
| OLD | NEW |