Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Unified Diff: athena/input/accelerator_manager_impl.cc

Issue 601333002: ESC accelerator and consistent overview mode for Athena homecard (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address reviews, update unit tests Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: athena/input/accelerator_manager_impl.cc
diff --git a/athena/input/accelerator_manager_impl.cc b/athena/input/accelerator_manager_impl.cc
index 078370aae0610a77347883b807da0d25d6bcee84..486e6299e3d57f3b5d266a6ec64a7b801a3905f6 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);
}
@@ -169,10 +176,15 @@ class FocusManagerWrapper : public AcceleratorManagerImpl::AcceleratorWrapper {
virtual void Register(const ui::Accelerator& accelerator,
ui::AcceleratorTarget* target) OVERRIDE {
- return focus_manager_->RegisterAccelerator(
+ focus_manager_->RegisterAccelerator(
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();

Powered by Google App Engine
This is Rietveld 408576698