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. |