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

Unified Diff: ash/mus/accelerators/accelerator_controller_registrar.cc

Issue 2783613003: Add window cycle completion and cancellation accelerators in mus+ash. (Closed)
Patch Set: rename constants. Created 3 years, 9 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
« no previous file with comments | « ash/mus/accelerators/accelerator_controller_registrar.h ('k') | services/ui/ws/event_dispatcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/mus/accelerators/accelerator_controller_registrar.cc
diff --git a/ash/mus/accelerators/accelerator_controller_registrar.cc b/ash/mus/accelerators/accelerator_controller_registrar.cc
index e783e463fb2bbb6747c1978ff72857e1a8d3712d..278d9742e4b5c509493fb685ed9b1241638d51ff 100644
--- a/ash/mus/accelerators/accelerator_controller_registrar.cc
+++ b/ash/mus/accelerators/accelerator_controller_registrar.cc
@@ -8,6 +8,7 @@
#include "ash/common/accelerators/accelerator_controller.h"
#include "ash/common/accelerators/accelerator_router.h"
+#include "ash/common/wm/window_cycle_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/mus/accelerators/accelerator_ids.h"
#include "ash/mus/window_manager.h"
@@ -16,6 +17,7 @@
#include "base/logging.h"
#include "services/ui/common/accelerator_util.h"
#include "services/ui/public/cpp/property_type_converters.h"
+#include "ui/base/accelerators/accelerator.h"
#include "ui/base/accelerators/accelerator_history.h"
namespace ash {
@@ -34,11 +36,16 @@ void OnAcceleratorsAdded(const std::vector<ui::Accelerator>& accelerators,
AcceleratorControllerRegistrar::AcceleratorControllerRegistrar(
WindowManager* window_manager,
uint16_t id_namespace)
- : window_manager_(window_manager),
+ : window_cycle_complete_accelerator_(ui::VKEY_MENU,
+ ui::EF_NONE,
+ ui::Accelerator::KeyState::RELEASED),
+ window_cycle_cancel_accelerator_(ui::VKEY_ESCAPE, ui::EF_ALT_DOWN),
+ window_manager_(window_manager),
id_namespace_(id_namespace),
next_id_(0),
router_(new AcceleratorRouter) {
window_manager_->AddAcceleratorHandler(id_namespace, this);
+ RegisterWindowCycleAccelerators();
}
AcceleratorControllerRegistrar::~AcceleratorControllerRegistrar() {
@@ -82,6 +89,8 @@ ui::mojom::EventResult AcceleratorControllerRegistrar::OnAccelerator(
// http://crbug.com/630683.
accelerator_controller->accelerator_history()->StoreCurrentAccelerator(
accelerator);
+ if (HandleWindowCycleAccelerator(accelerator))
+ return ui::mojom::EventResult::HANDLED;
WmWindow* target_window = WmShell::Get()->GetFocusedWindow();
if (!target_window)
target_window = Shell::GetWmRootWindowForNewWindows();
@@ -185,5 +194,32 @@ uint16_t AcceleratorControllerRegistrar::GetNextLocalAcceleratorId() {
return next_id_++;
}
+void AcceleratorControllerRegistrar::RegisterWindowCycleAccelerators() {
+ std::vector<ui::Accelerator> accelerators;
+ accelerators.push_back(window_cycle_complete_accelerator_);
+ accelerators.push_back(window_cycle_cancel_accelerator_);
+ OnAcceleratorsRegistered(accelerators);
+}
+
+bool AcceleratorControllerRegistrar::HandleWindowCycleAccelerator(
+ const ui::Accelerator& accelerator) {
+ ash::WindowCycleController* window_cycle_controller =
+ Shell::Get()->window_cycle_controller();
+ if (!window_cycle_controller->IsCycling())
+ return false;
+
+ if (accelerator == window_cycle_complete_accelerator_) {
+ window_cycle_controller->CompleteCycling();
+ return true;
+ }
+
+ if (accelerator == window_cycle_cancel_accelerator_) {
+ window_cycle_controller->CancelCycling();
+ return true;
+ }
+
+ return false;
+}
+
} // namespace mus
} // namespace ash
« no previous file with comments | « ash/mus/accelerators/accelerator_controller_registrar.h ('k') | services/ui/ws/event_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698