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 |