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

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

Issue 2751323002: Converts ui::Accelerator::type to an enum (Closed)
Patch Set: remove dcheck 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/base/accelerators/accelerator.h" 5 #include "ui/base/accelerators/accelerator.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/i18n/rtl.h" 9 #include "base/i18n/rtl.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/base/l10n/l10n_util.h"
15 #include "ui/events/event.h" 15 #include "ui/events/event.h"
16 #include "ui/strings/grit/ui_strings.h" 16 #include "ui/strings/grit/ui_strings.h"
17 17
18 #if defined(OS_WIN) 18 #if defined(OS_WIN)
19 #include <windows.h> 19 #include <windows.h>
20 #endif 20 #endif
21 21
22 #if !defined(OS_WIN) && (defined(USE_AURA) || defined(OS_MACOSX)) 22 #if !defined(OS_WIN) && (defined(USE_AURA) || defined(OS_MACOSX))
23 #include "ui/events/keycodes/keyboard_code_conversion.h" 23 #include "ui/events/keycodes/keyboard_code_conversion.h"
24 #endif 24 #endif
25 25
26 namespace ui { 26 namespace ui {
27 27
28 namespace { 28 namespace {
29 29
30 const int kModifierMask = ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | 30 const int kModifierMask =
31 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN; 31 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_ALT_DOWN | EF_COMMAND_DOWN;
32 32
33 const int kInterestingFlagsMask = 33 const int kInterestingFlagsMask =
34 kModifierMask | ui::EF_IS_SYNTHESIZED | ui::EF_IS_REPEAT; 34 kModifierMask | EF_IS_SYNTHESIZED | EF_IS_REPEAT;
35 35
36 } // namespace 36 } // namespace
37 37
38 Accelerator::Accelerator() 38 Accelerator::Accelerator() : Accelerator(VKEY_UNKNOWN, EF_NONE) {}
39 : key_code_(ui::VKEY_UNKNOWN), type_(ui::ET_KEY_PRESSED), modifiers_(0) {}
40 39
41 Accelerator::Accelerator(KeyboardCode keycode, int modifiers) 40 Accelerator::Accelerator(KeyboardCode key_code, int modifiers)
42 : key_code_(keycode), 41 : key_code_(key_code),
43 type_(ui::ET_KEY_PRESSED), 42 key_state_(KeyState::PRESSED),
44 modifiers_(modifiers & kInterestingFlagsMask) {} 43 modifiers_(modifiers & kInterestingFlagsMask) {}
45 44
46 Accelerator::Accelerator(const KeyEvent& key_event) 45 Accelerator::Accelerator(const KeyEvent& key_event)
47 : key_code_(key_event.key_code()), 46 : key_code_(key_event.key_code()),
48 type_(key_event.type()), 47 key_state_(key_event.type() == ET_KEY_PRESSED ? KeyState::PRESSED
48 : KeyState::RELEASED),
49 // |modifiers_| may include the repeat flag. 49 // |modifiers_| may include the repeat flag.
50 modifiers_(key_event.flags() & kInterestingFlagsMask) {} 50 modifiers_(key_event.flags() & kInterestingFlagsMask) {}
51 51
52 Accelerator::Accelerator(const Accelerator& accelerator) { 52 Accelerator::Accelerator(const Accelerator& accelerator) {
53 key_code_ = accelerator.key_code_; 53 key_code_ = accelerator.key_code_;
54 type_ = accelerator.type_; 54 key_state_ = accelerator.key_state_;
55 modifiers_ = accelerator.modifiers_; 55 modifiers_ = accelerator.modifiers_;
56 if (accelerator.platform_accelerator_.get()) 56 if (accelerator.platform_accelerator_)
57 platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy(); 57 platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy();
58 } 58 }
59 59
60 Accelerator::~Accelerator() { 60 Accelerator::~Accelerator() {
61 } 61 }
62 62
63 // static 63 // static
64 int Accelerator::MaskOutKeyEventFlags(int flags) { 64 int Accelerator::MaskOutKeyEventFlags(int flags) {
65 return flags & kModifierMask; 65 return flags & kModifierMask;
66 } 66 }
67 67
68 Accelerator& Accelerator::operator=(const Accelerator& accelerator) { 68 Accelerator& Accelerator::operator=(const Accelerator& accelerator) {
69 if (this != &accelerator) { 69 if (this != &accelerator) {
70 key_code_ = accelerator.key_code_; 70 key_code_ = accelerator.key_code_;
71 type_ = accelerator.type_; 71 key_state_ = accelerator.key_state_;
72 modifiers_ = accelerator.modifiers_; 72 modifiers_ = accelerator.modifiers_;
73 if (accelerator.platform_accelerator_.get()) 73 if (accelerator.platform_accelerator_)
74 platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy(); 74 platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy();
75 else 75 else
76 platform_accelerator_.reset(); 76 platform_accelerator_.reset();
77 } 77 }
78 return *this; 78 return *this;
79 } 79 }
80 80
81 bool Accelerator::operator <(const Accelerator& rhs) const { 81 bool Accelerator::operator <(const Accelerator& rhs) const {
82 if (key_code_ != rhs.key_code_) 82 if (key_code_ != rhs.key_code_)
83 return key_code_ < rhs.key_code_; 83 return key_code_ < rhs.key_code_;
84 if (type_ != rhs.type_) 84 if (key_state_ != rhs.key_state_) {
85 return type_ < rhs.type_; 85 return static_cast<int32_t>(key_state_) <
86 static_cast<int32_t>(rhs.key_state_);
87 }
86 return MaskOutKeyEventFlags(modifiers_) < 88 return MaskOutKeyEventFlags(modifiers_) <
87 MaskOutKeyEventFlags(rhs.modifiers_); 89 MaskOutKeyEventFlags(rhs.modifiers_);
88 } 90 }
89 91
90 bool Accelerator::operator ==(const Accelerator& rhs) const { 92 bool Accelerator::operator ==(const Accelerator& rhs) const {
91 if ((key_code_ == rhs.key_code_) && (type_ == rhs.type_) && 93 if ((key_code_ == rhs.key_code_) && (key_state_ == rhs.key_state_) &&
92 (MaskOutKeyEventFlags(modifiers_) == 94 (MaskOutKeyEventFlags(modifiers_) ==
93 MaskOutKeyEventFlags(rhs.modifiers_))) 95 MaskOutKeyEventFlags(rhs.modifiers_)))
94 return true; 96 return true;
95 97
96 bool platform_equal = 98 bool platform_equal =
97 platform_accelerator_.get() && rhs.platform_accelerator_.get() && 99 platform_accelerator_.get() && rhs.platform_accelerator_.get() &&
98 platform_accelerator_.get() == rhs.platform_accelerator_.get(); 100 platform_accelerator_.get() == rhs.platform_accelerator_.get();
99 101
100 return platform_equal; 102 return platform_equal;
101 } 103 }
(...skipping 18 matching lines...) Expand all
120 return (modifiers_ & EF_COMMAND_DOWN) != 0; 122 return (modifiers_ & EF_COMMAND_DOWN) != 0;
121 } 123 }
122 124
123 bool Accelerator::IsRepeat() const { 125 bool Accelerator::IsRepeat() const {
124 return (modifiers_ & EF_IS_REPEAT) != 0; 126 return (modifiers_ & EF_IS_REPEAT) != 0;
125 } 127 }
126 128
127 base::string16 Accelerator::GetShortcutText() const { 129 base::string16 Accelerator::GetShortcutText() const {
128 int string_id = 0; 130 int string_id = 0;
129 switch (key_code_) { 131 switch (key_code_) {
130 case ui::VKEY_TAB: 132 case VKEY_TAB:
131 string_id = IDS_APP_TAB_KEY; 133 string_id = IDS_APP_TAB_KEY;
132 break; 134 break;
133 case ui::VKEY_RETURN: 135 case VKEY_RETURN:
134 string_id = IDS_APP_ENTER_KEY; 136 string_id = IDS_APP_ENTER_KEY;
135 break; 137 break;
136 case ui::VKEY_ESCAPE: 138 case VKEY_ESCAPE:
137 string_id = IDS_APP_ESC_KEY; 139 string_id = IDS_APP_ESC_KEY;
138 break; 140 break;
139 case ui::VKEY_SPACE: 141 case VKEY_SPACE:
140 string_id = IDS_APP_SPACE_KEY; 142 string_id = IDS_APP_SPACE_KEY;
141 break; 143 break;
142 case ui::VKEY_PRIOR: 144 case VKEY_PRIOR:
143 string_id = IDS_APP_PAGEUP_KEY; 145 string_id = IDS_APP_PAGEUP_KEY;
144 break; 146 break;
145 case ui::VKEY_NEXT: 147 case VKEY_NEXT:
146 string_id = IDS_APP_PAGEDOWN_KEY; 148 string_id = IDS_APP_PAGEDOWN_KEY;
147 break; 149 break;
148 case ui::VKEY_END: 150 case VKEY_END:
149 string_id = IDS_APP_END_KEY; 151 string_id = IDS_APP_END_KEY;
150 break; 152 break;
151 case ui::VKEY_HOME: 153 case VKEY_HOME:
152 string_id = IDS_APP_HOME_KEY; 154 string_id = IDS_APP_HOME_KEY;
153 break; 155 break;
154 case ui::VKEY_INSERT: 156 case VKEY_INSERT:
155 string_id = IDS_APP_INSERT_KEY; 157 string_id = IDS_APP_INSERT_KEY;
156 break; 158 break;
157 case ui::VKEY_DELETE: 159 case VKEY_DELETE:
158 string_id = IDS_APP_DELETE_KEY; 160 string_id = IDS_APP_DELETE_KEY;
159 break; 161 break;
160 case ui::VKEY_LEFT: 162 case VKEY_LEFT:
161 string_id = IDS_APP_LEFT_ARROW_KEY; 163 string_id = IDS_APP_LEFT_ARROW_KEY;
162 break; 164 break;
163 case ui::VKEY_RIGHT: 165 case VKEY_RIGHT:
164 string_id = IDS_APP_RIGHT_ARROW_KEY; 166 string_id = IDS_APP_RIGHT_ARROW_KEY;
165 break; 167 break;
166 case ui::VKEY_UP: 168 case VKEY_UP:
167 string_id = IDS_APP_UP_ARROW_KEY; 169 string_id = IDS_APP_UP_ARROW_KEY;
168 break; 170 break;
169 case ui::VKEY_DOWN: 171 case VKEY_DOWN:
170 string_id = IDS_APP_DOWN_ARROW_KEY; 172 string_id = IDS_APP_DOWN_ARROW_KEY;
171 break; 173 break;
172 case ui::VKEY_BACK: 174 case VKEY_BACK:
173 string_id = IDS_APP_BACKSPACE_KEY; 175 string_id = IDS_APP_BACKSPACE_KEY;
174 break; 176 break;
175 case ui::VKEY_F1: 177 case VKEY_F1:
176 string_id = IDS_APP_F1_KEY; 178 string_id = IDS_APP_F1_KEY;
177 break; 179 break;
178 case ui::VKEY_F11: 180 case VKEY_F11:
179 string_id = IDS_APP_F11_KEY; 181 string_id = IDS_APP_F11_KEY;
180 break; 182 break;
181 case ui::VKEY_OEM_COMMA: 183 case VKEY_OEM_COMMA:
182 string_id = IDS_APP_COMMA_KEY; 184 string_id = IDS_APP_COMMA_KEY;
183 break; 185 break;
184 case ui::VKEY_OEM_PERIOD: 186 case VKEY_OEM_PERIOD:
185 string_id = IDS_APP_PERIOD_KEY; 187 string_id = IDS_APP_PERIOD_KEY;
186 break; 188 break;
187 case ui::VKEY_MEDIA_NEXT_TRACK: 189 case VKEY_MEDIA_NEXT_TRACK:
188 string_id = IDS_APP_MEDIA_NEXT_TRACK_KEY; 190 string_id = IDS_APP_MEDIA_NEXT_TRACK_KEY;
189 break; 191 break;
190 case ui::VKEY_MEDIA_PLAY_PAUSE: 192 case VKEY_MEDIA_PLAY_PAUSE:
191 string_id = IDS_APP_MEDIA_PLAY_PAUSE_KEY; 193 string_id = IDS_APP_MEDIA_PLAY_PAUSE_KEY;
192 break; 194 break;
193 case ui::VKEY_MEDIA_PREV_TRACK: 195 case VKEY_MEDIA_PREV_TRACK:
194 string_id = IDS_APP_MEDIA_PREV_TRACK_KEY; 196 string_id = IDS_APP_MEDIA_PREV_TRACK_KEY;
195 break; 197 break;
196 case ui::VKEY_MEDIA_STOP: 198 case VKEY_MEDIA_STOP:
197 string_id = IDS_APP_MEDIA_STOP_KEY; 199 string_id = IDS_APP_MEDIA_STOP_KEY;
198 break; 200 break;
199 default: 201 default:
200 break; 202 break;
201 } 203 }
202 204
203 base::string16 shortcut; 205 base::string16 shortcut;
204 if (!string_id) { 206 if (!string_id) {
205 #if defined(OS_WIN) 207 #if defined(OS_WIN)
206 // Our fallback is to try translate the key code to a regular character 208 // Our fallback is to try translate the key code to a regular character
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 288
287 // Subtracting the size of the shortcut key and 1 for the '+' sign. 289 // Subtracting the size of the shortcut key and 1 for the '+' sign.
288 shortcut_rtl.append(shortcut, 0, shortcut.length() - key_length - 1); 290 shortcut_rtl.append(shortcut, 0, shortcut.length() - key_length - 1);
289 shortcut.swap(shortcut_rtl); 291 shortcut.swap(shortcut_rtl);
290 } 292 }
291 293
292 return shortcut; 294 return shortcut;
293 } 295 }
294 296
295 } // namespace ui 297 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698