diff options
Diffstat (limited to 'chromium/ash/accelerators/focus_manager_factory.cc')
-rw-r--r-- | chromium/ash/accelerators/focus_manager_factory.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/chromium/ash/accelerators/focus_manager_factory.cc b/chromium/ash/accelerators/focus_manager_factory.cc new file mode 100644 index 00000000000..0695fd3e7a0 --- /dev/null +++ b/chromium/ash/accelerators/focus_manager_factory.cc @@ -0,0 +1,41 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/accelerators/focus_manager_factory.h" + +#include "ash/accelerators/accelerator_controller.h" +#include "ash/shell.h" +#include "ui/views/focus/focus_manager.h" + +namespace ash { + +AshFocusManagerFactory::AshFocusManagerFactory() {} +AshFocusManagerFactory::~AshFocusManagerFactory() {} + +views::FocusManager* AshFocusManagerFactory::CreateFocusManager( + views::Widget* widget, + bool desktop_widget) { + return new views::FocusManager(widget, desktop_widget ? NULL : new Delegate); +} + +bool AshFocusManagerFactory::Delegate::ProcessAccelerator( + const ui::Accelerator& accelerator) { + AcceleratorController* controller = + Shell::GetInstance()->accelerator_controller(); + if (controller) + return controller->Process(accelerator); + return false; +} + +ui::AcceleratorTarget* +AshFocusManagerFactory::Delegate::GetCurrentTargetForAccelerator( + const ui::Accelerator& accelerator) const { + AcceleratorController* controller = + Shell::GetInstance()->accelerator_controller(); + if (controller && controller->IsRegistered(accelerator)) + return controller; + return NULL; +} + +} // namespace ash |