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

Unified Diff: ui/base/models/accelerator.h

Issue 8508055: Move views::Accelerator to ui in order to use it from aura code. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 9 years, 1 month 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 | « chrome/browser/ui/views/wrench_menu.cc ('k') | ui/base/models/accelerator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/models/accelerator.h
diff --git a/ui/base/models/accelerator.h b/ui/base/models/accelerator.h
index 83170b79a48bf286f51bb872a8d3c2c68ae478c8..42de42ab4a5ea353277135432cfc146b2f9e5098 100644
--- a/ui/base/models/accelerator.h
+++ b/ui/base/models/accelerator.h
@@ -2,11 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// This class describe a keyboard accelerator (or keyboard shortcut).
+// Keyboard accelerators are registered with the FocusManager.
+// It has a copy constructor and assignment operator so that it can be copied.
+// It also defines the < operator so that it can be used as a key in a std::map.
+//
+
#ifndef UI_BASE_MODELS_ACCELERATOR_H_
#define UI_BASE_MODELS_ACCELERATOR_H_
#pragma once
+#include "base/string16.h"
#include "ui/base/keycodes/keyboard_codes.h"
+#include "ui/base/events.h"
#include "ui/base/ui_export.h"
namespace ui {
@@ -26,6 +34,18 @@ class UI_EXPORT Accelerator {
modifiers_ = accelerator.modifiers_;
}
+ Accelerator(ui::KeyboardCode keycode,
+ bool shift_pressed, bool ctrl_pressed, bool alt_pressed)
+ : key_code_(keycode),
+ modifiers_(0) {
+ if (shift_pressed)
+ modifiers_ |= ui::EF_SHIFT_DOWN;
+ if (ctrl_pressed)
+ modifiers_ |= ui::EF_CONTROL_DOWN;
+ if (alt_pressed)
+ modifiers_ |= ui::EF_ALT_DOWN;
+ }
+
virtual ~Accelerator() {}
Accelerator& operator=(const Accelerator& accelerator) {
@@ -56,6 +76,21 @@ class UI_EXPORT Accelerator {
int modifiers() const { return modifiers_; }
+ bool IsShiftDown() const {
+ return (modifiers_ & ui::EF_SHIFT_DOWN) == ui::EF_SHIFT_DOWN;
+ }
+
+ bool IsCtrlDown() const {
+ return (modifiers_ & ui::EF_CONTROL_DOWN) == ui::EF_CONTROL_DOWN;
+ }
+
+ bool IsAltDown() const {
+ return (modifiers_ & ui::EF_ALT_DOWN) == ui::EF_ALT_DOWN;
+ }
+
+ // Returns a string with the localized shortcut if any.
+ string16 GetShortcutText() const;
+
protected:
// The keycode (VK_...).
ui::KeyboardCode key_code_;
@@ -64,6 +99,17 @@ class UI_EXPORT Accelerator {
int modifiers_;
};
+// An interface that classes that want to register for keyboard accelerators
+// should implement.
+class UI_EXPORT AcceleratorTarget {
+ public:
+ // This method should return true if the accelerator was processed.
+ virtual bool AcceleratorPressed(const Accelerator& accelerator) = 0;
+
+ protected:
+ virtual ~AcceleratorTarget() {}
+};
+
// Since acclerator code is one of the few things that can't be cross platform
// in the chrome UI, separate out just the GetAcceleratorForCommandId() from
// the menu delegates.
« no previous file with comments | « chrome/browser/ui/views/wrench_menu.cc ('k') | ui/base/models/accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698