| Index: athena/input/accelerator_manager_impl.cc
|
| diff --git a/athena/input/accelerator_manager_impl.cc b/athena/input/accelerator_manager_impl.cc
|
| index 196a3d564bb6c61b7726b0b72ab16f00d01b0026..24252521e85a2221e9d303e84bff88bca84a1956 100644
|
| --- a/athena/input/accelerator_manager_impl.cc
|
| +++ b/athena/input/accelerator_manager_impl.cc
|
| @@ -29,6 +29,8 @@ class AcceleratorManagerImpl::AcceleratorWrapper {
|
| virtual ~AcceleratorWrapper() {}
|
| virtual void Register(const ui::Accelerator& accelerator,
|
| ui::AcceleratorTarget* target) = 0;
|
| + virtual void Unregister(const ui::Accelerator& accelerator,
|
| + ui::AcceleratorTarget* target) = 0;
|
| virtual bool Process(const ui::Accelerator& accelerator) = 0;
|
| virtual ui::AcceleratorTarget* GetCurrentTarget(
|
| const ui::Accelerator& accelertor) const = 0;
|
| @@ -142,10 +144,15 @@ class UIAcceleratorManagerWrapper
|
|
|
| virtual void Register(const ui::Accelerator& accelerator,
|
| ui::AcceleratorTarget* target) override {
|
| - return ui_accelerator_manager_->Register(
|
| + ui_accelerator_manager_->Register(
|
| accelerator, ui::AcceleratorManager::kNormalPriority, target);
|
| }
|
|
|
| + virtual void Unregister(const ui::Accelerator& accelerator,
|
| + ui::AcceleratorTarget* target) override {
|
| + ui_accelerator_manager_->Unregister(accelerator, target);
|
| + }
|
| +
|
| virtual bool Process(const ui::Accelerator& accelerator) override {
|
| return ui_accelerator_manager_->Process(accelerator);
|
| }
|
| @@ -173,6 +180,11 @@ class FocusManagerWrapper : public AcceleratorManagerImpl::AcceleratorWrapper {
|
| accelerator, ui::AcceleratorManager::kNormalPriority, target);
|
| }
|
|
|
| + virtual void Unregister(const ui::Accelerator& accelerator,
|
| + ui::AcceleratorTarget* target) OVERRIDE {
|
| + focus_manager_->UnregisterAccelerator(accelerator, target);
|
| + }
|
| +
|
| virtual bool Process(const ui::Accelerator& accelerator) override {
|
| NOTREACHED();
|
| return true;
|
| @@ -324,6 +336,21 @@ void AcceleratorManagerImpl::RegisterAccelerator(
|
| accelerator_data.accelerator_flags)));
|
| }
|
|
|
| +void AcceleratorManagerImpl::UnregisterAccelerator(
|
| + const AcceleratorData& accelerator_data,
|
| + AcceleratorHandler* handler) {
|
| + ui::Accelerator accelerator(accelerator_data.keycode,
|
| + accelerator_data.keyevent_flags);
|
| + accelerator.set_type(accelerator_data.trigger_event == TRIGGER_ON_PRESS
|
| + ? ui::ET_KEY_PRESSED
|
| + : ui::ET_KEY_RELEASED);
|
| + accelerator_wrapper_->Unregister(accelerator, this);
|
| + std::map<ui::Accelerator, InternalData>::const_iterator iter =
|
| + accelerators_.find(accelerator);
|
| + if (iter != accelerators_.end())
|
| + accelerators_.erase(iter);
|
| +}
|
| +
|
| // static
|
| AcceleratorManager* AcceleratorManager::Get() {
|
| return InputManager::Get()->GetAcceleratorManager();
|
|
|