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

Side by Side Diff: ui/base/accelerators/accelerator.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 unified diff | Download patch
« no previous file with comments | « ui/base/BUILD.gn ('k') | ui/base/accelerators/accelerator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This class describe a keyboard accelerator (or keyboard shortcut).
6 // Keyboard accelerators are registered with the FocusManager.
7 // It has a copy constructor and assignment operator so that it can be copied.
8 // It also defines the < operator so that it can be used as a key in a std::map.
9 //
10
11 #ifndef UI_BASE_ACCELERATORS_ACCELERATOR_H_
12 #define UI_BASE_ACCELERATORS_ACCELERATOR_H_
13
14 #include "base/memory/scoped_ptr.h"
15 #include "base/strings/string16.h"
16 #include "ui/base/accelerators/platform_accelerator.h"
17 #include "ui/base/ui_base_export.h"
18 #include "ui/events/event_constants.h"
19 #include "ui/events/keycodes/keyboard_codes.h"
20
21 namespace ui {
22
23 class PlatformAccelerator;
24
25 // This is a cross-platform class for accelerator keys used in menus.
26 // |platform_accelerator| should be used to store platform specific data.
27 class UI_BASE_EXPORT Accelerator {
28 public:
29 Accelerator();
30 Accelerator(ui::KeyboardCode keycode, int modifiers);
31 Accelerator(const Accelerator& accelerator);
32 ~Accelerator();
33
34 Accelerator& operator=(const Accelerator& accelerator);
35
36 // Define the < operator so that the KeyboardShortcut can be used as a key in
37 // a std::map.
38 bool operator <(const Accelerator& rhs) const;
39
40 bool operator ==(const Accelerator& rhs) const;
41
42 bool operator !=(const Accelerator& rhs) const;
43
44 ui::KeyboardCode key_code() const { return key_code_; }
45
46 // Sets the event type if the accelerator should be processed on an event
47 // other than ui::ET_KEY_PRESSED.
48 void set_type(ui::EventType type) { type_ = type; }
49 ui::EventType type() const { return type_; }
50
51 int modifiers() const { return modifiers_; }
52
53 bool IsShiftDown() const;
54 bool IsCtrlDown() const;
55 bool IsAltDown() const;
56 bool IsCmdDown() const;
57 bool IsRepeat() const;
58
59 // Returns a string with the localized shortcut if any.
60 base::string16 GetShortcutText() const;
61
62 void set_platform_accelerator(scoped_ptr<PlatformAccelerator> p) {
63 platform_accelerator_ = p.Pass();
64 }
65
66 // This class keeps ownership of the returned object.
67 const PlatformAccelerator* platform_accelerator() const {
68 return platform_accelerator_.get();
69 }
70
71 void set_is_repeat(bool is_repeat) { is_repeat_ = is_repeat; }
72
73 protected:
74 // The keycode (VK_...).
75 KeyboardCode key_code_;
76
77 // The event type (usually ui::ET_KEY_PRESSED).
78 EventType type_;
79
80 // The state of the Shift/Ctrl/Alt keys.
81 int modifiers_;
82
83 // True if the accelerator is created for an auto repeated key event.
84 bool is_repeat_;
85
86 // Stores platform specific data. May be NULL.
87 scoped_ptr<PlatformAccelerator> platform_accelerator_;
88 };
89
90 // An interface that classes that want to register for keyboard accelerators
91 // should implement.
92 class UI_BASE_EXPORT AcceleratorTarget {
93 public:
94 // Should return true if the accelerator was processed.
95 virtual bool AcceleratorPressed(const Accelerator& accelerator) = 0;
96
97 // Should return true if the target can handle the accelerator events. The
98 // AcceleratorPressed method is invoked only for targets for which
99 // CanHandleAccelerators returns true.
100 virtual bool CanHandleAccelerators() const = 0;
101
102 protected:
103 virtual ~AcceleratorTarget() {}
104 };
105
106 // Since accelerator code is one of the few things that can't be cross platform
107 // in the chrome UI, separate out just the GetAcceleratorForCommandId() from
108 // the menu delegates.
109 class AcceleratorProvider {
110 public:
111 // Gets the accelerator for the specified command id. Returns true if the
112 // command id has a valid accelerator, false otherwise.
113 virtual bool GetAcceleratorForCommandId(int command_id,
114 ui::Accelerator* accelerator) = 0;
115
116 protected:
117 virtual ~AcceleratorProvider() {}
118 };
119
120 } // namespace ui
121
122 #endif // UI_BASE_ACCELERATORS_ACCELERATOR_H_
OLDNEW
« no previous file with comments | « ui/base/BUILD.gn ('k') | ui/base/accelerators/accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698