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

Side by Side Diff: ui/views/controls/textfield/textfield.cc

Issue 2027133002: Modify ui::TextInputClient to use ui::TextEditCommand enum in place of resource ids. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor4_up_down_mac
Patch Set: Created 4 years, 6 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/views/controls/textfield/textfield.h" 5 #include "ui/views/controls/textfield/textfield.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "ui/accessibility/ax_view_state.h" 12 #include "ui/accessibility/ax_view_state.h"
13 #include "ui/base/clipboard/scoped_clipboard_writer.h" 13 #include "ui/base/clipboard/scoped_clipboard_writer.h"
14 #include "ui/base/cursor/cursor.h" 14 #include "ui/base/cursor/cursor.h"
15 #include "ui/base/default_style.h" 15 #include "ui/base/default_style.h"
16 #include "ui/base/dragdrop/drag_drop_types.h" 16 #include "ui/base/dragdrop/drag_drop_types.h"
17 #include "ui/base/dragdrop/drag_utils.h" 17 #include "ui/base/dragdrop/drag_utils.h"
18 #include "ui/base/ime/input_method.h" 18 #include "ui/base/ime/input_method.h"
19 #include "ui/base/resource/resource_bundle.h" 19 #include "ui/base/resource/resource_bundle.h"
20 #include "ui/base/ui_base_switches_util.h" 20 #include "ui/base/ui_base_switches_util.h"
21 #include "ui/compositor/canvas_painter.h" 21 #include "ui/compositor/canvas_painter.h"
22 #include "ui/compositor/scoped_animation_duration_scale_mode.h" 22 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
23 #include "ui/display/display.h" 23 #include "ui/display/display.h"
24 #include "ui/display/screen.h" 24 #include "ui/display/screen.h"
25 #include "ui/events/base_event_utils.h" 25 #include "ui/events/base_event_utils.h"
26 #include "ui/events/event.h" 26 #include "ui/events/event.h"
27 #include "ui/events/keycodes/keyboard_codes.h" 27 #include "ui/events/keycodes/keyboard_codes.h"
28 #include "ui/events/text_edit_commands.h"
28 #include "ui/gfx/canvas.h" 29 #include "ui/gfx/canvas.h"
29 #include "ui/gfx/geometry/insets.h" 30 #include "ui/gfx/geometry/insets.h"
30 #include "ui/gfx/selection_bound.h" 31 #include "ui/gfx/selection_bound.h"
31 #include "ui/native_theme/native_theme.h" 32 #include "ui/native_theme/native_theme.h"
32 #include "ui/strings/grit/ui_strings.h" 33 #include "ui/strings/grit/ui_strings.h"
33 #include "ui/views/background.h" 34 #include "ui/views/background.h"
34 #include "ui/views/controls/focusable_border.h" 35 #include "ui/views/controls/focusable_border.h"
35 #include "ui/views/controls/label.h" 36 #include "ui/views/controls/label.h"
36 #include "ui/views/controls/menu/menu_runner.h" 37 #include "ui/views/controls/menu/menu_runner.h"
37 #include "ui/views/controls/native/native_view_host.h" 38 #include "ui/views/controls/native/native_view_host.h"
(...skipping 17 matching lines...) Expand all
55 #include "ui/events/linux/text_edit_key_bindings_delegate_auralinux.h" 56 #include "ui/events/linux/text_edit_key_bindings_delegate_auralinux.h"
56 #endif 57 #endif
57 58
58 namespace views { 59 namespace views {
59 60
60 namespace { 61 namespace {
61 62
62 // Default placeholder text color. 63 // Default placeholder text color.
63 const SkColor kDefaultPlaceholderTextColor = SK_ColorLTGRAY; 64 const SkColor kDefaultPlaceholderTextColor = SK_ColorLTGRAY;
64 65
65 const int kNoCommand = 0;
66
67 void ConvertRectToScreen(const View* src, gfx::Rect* r) { 66 void ConvertRectToScreen(const View* src, gfx::Rect* r) {
68 DCHECK(src); 67 DCHECK(src);
69 68
70 gfx::Point new_origin = r->origin(); 69 gfx::Point new_origin = r->origin();
71 View::ConvertPointToScreen(src, &new_origin); 70 View::ConvertPointToScreen(src, &new_origin);
72 r->set_origin(new_origin); 71 r->set_origin(new_origin);
73 } 72 }
74 73
75 // Get the drag selection timer delay, respecting animation scaling for testing. 74 // Get the drag selection timer delay, respecting animation scaling for testing.
76 int GetDragSelectionDelay() { 75 int GetDragSelectionDelay() {
77 switch (ui::ScopedAnimationDurationScaleMode::duration_scale_mode()) { 76 switch (ui::ScopedAnimationDurationScaleMode::duration_scale_mode()) {
78 case ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION: return 100; 77 case ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION: return 100;
79 case ui::ScopedAnimationDurationScaleMode::FAST_DURATION: return 25; 78 case ui::ScopedAnimationDurationScaleMode::FAST_DURATION: return 25;
80 case ui::ScopedAnimationDurationScaleMode::SLOW_DURATION: return 400; 79 case ui::ScopedAnimationDurationScaleMode::SLOW_DURATION: return 400;
81 case ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION: return 1; 80 case ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION: return 1;
82 case ui::ScopedAnimationDurationScaleMode::ZERO_DURATION: return 0; 81 case ui::ScopedAnimationDurationScaleMode::ZERO_DURATION: return 0;
83 } 82 }
84 return 100; 83 return 100;
85 } 84 }
86 85
87 // Get the default command for a given key |event|. 86 // Get the default command for a given key |event|.
88 int GetCommandForKeyEvent(const ui::KeyEvent& event) { 87 ui::TextEditCommand GetCommandForKeyEvent(const ui::KeyEvent& event) {
89 if (event.type() != ui::ET_KEY_PRESSED || event.IsUnicodeKeyCode()) 88 if (event.type() != ui::ET_KEY_PRESSED || event.IsUnicodeKeyCode())
90 return kNoCommand; 89 return ui::TextEditCommand::INVALID_COMMAND;
91 90
92 const bool shift = event.IsShiftDown(); 91 const bool shift = event.IsShiftDown();
93 const bool control = event.IsControlDown(); 92 const bool control = event.IsControlDown();
94 const bool alt = event.IsAltDown() || event.IsAltGrDown(); 93 const bool alt = event.IsAltDown() || event.IsAltGrDown();
95 switch (event.key_code()) { 94 switch (event.key_code()) {
96 case ui::VKEY_Z: 95 case ui::VKEY_Z:
97 if (control && !shift && !alt) 96 if (control && !shift && !alt)
98 return IDS_APP_UNDO; 97 return ui::TextEditCommand::UNDO;
99 return (control && shift && !alt) ? IDS_APP_REDO : kNoCommand; 98 return (control && shift && !alt) ? ui::TextEditCommand::REDO
99 : ui::TextEditCommand::INVALID_COMMAND;
100 case ui::VKEY_Y: 100 case ui::VKEY_Y:
101 return (control && !alt) ? IDS_APP_REDO : kNoCommand; 101 return (control && !alt) ? ui::TextEditCommand::REDO
102 : ui::TextEditCommand::INVALID_COMMAND;
102 case ui::VKEY_A: 103 case ui::VKEY_A:
103 return (control && !alt) ? IDS_APP_SELECT_ALL : kNoCommand; 104 return (control && !alt) ? ui::TextEditCommand::SELECT_ALL
105 : ui::TextEditCommand::INVALID_COMMAND;
104 case ui::VKEY_X: 106 case ui::VKEY_X:
105 return (control && !alt) ? IDS_APP_CUT : kNoCommand; 107 return (control && !alt) ? ui::TextEditCommand::CUT
108 : ui::TextEditCommand::INVALID_COMMAND;
106 case ui::VKEY_C: 109 case ui::VKEY_C:
107 return (control && !alt) ? IDS_APP_COPY : kNoCommand; 110 return (control && !alt) ? ui::TextEditCommand::COPY
111 : ui::TextEditCommand::INVALID_COMMAND;
108 case ui::VKEY_V: 112 case ui::VKEY_V:
109 return (control && !alt) ? IDS_APP_PASTE : kNoCommand; 113 return (control && !alt) ? ui::TextEditCommand::PASTE
114 : ui::TextEditCommand::INVALID_COMMAND;
110 case ui::VKEY_RIGHT: 115 case ui::VKEY_RIGHT:
111 // Ignore alt+right, which may be a browser navigation shortcut. 116 // Ignore alt+right, which may be a browser navigation shortcut.
112 if (alt) 117 if (alt)
113 return kNoCommand; 118 return ui::TextEditCommand::INVALID_COMMAND;
114 if (!shift) 119 if (!shift)
115 return control ? IDS_MOVE_WORD_RIGHT : IDS_MOVE_RIGHT; 120 return control ? ui::TextEditCommand::MOVE_WORD_RIGHT
116 return control ? IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION : 121 : ui::TextEditCommand::MOVE_RIGHT;
117 IDS_MOVE_RIGHT_AND_MODIFY_SELECTION; 122 return control ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
123 : ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION;
118 case ui::VKEY_LEFT: 124 case ui::VKEY_LEFT:
119 // Ignore alt+left, which may be a browser navigation shortcut. 125 // Ignore alt+left, which may be a browser navigation shortcut.
120 if (alt) 126 if (alt)
121 return kNoCommand; 127 return ui::TextEditCommand::INVALID_COMMAND;
122 if (!shift) 128 if (!shift)
msw 2016/06/10 00:48:51 nit: add curly braces.
karandeepb 2016/06/10 08:20:46 Done.
123 return control ? IDS_MOVE_WORD_LEFT : IDS_MOVE_LEFT; 129 return control ? ui::TextEditCommand::MOVE_WORD_LEFT
124 return control ? IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION : 130 : ui::TextEditCommand::MOVE_LEFT;
125 IDS_MOVE_LEFT_AND_MODIFY_SELECTION; 131 return control ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
132 : ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION;
126 case ui::VKEY_HOME: 133 case ui::VKEY_HOME:
127 return shift ? IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION : 134 return shift ? ui::TextEditCommand::
128 IDS_MOVE_TO_BEGINNING_OF_LINE; 135 MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION
136 : ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE;
129 case ui::VKEY_END: 137 case ui::VKEY_END:
130 return shift ? IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION : 138 return shift
131 IDS_MOVE_TO_END_OF_LINE; 139 ? ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION
140 : ui::TextEditCommand::MOVE_TO_END_OF_LINE;
132 case ui::VKEY_BACK: 141 case ui::VKEY_BACK:
133 if (!control) 142 if (!control)
134 return IDS_DELETE_BACKWARD; 143 return ui::TextEditCommand::DELETE_BACKWARD;
135 #if defined(OS_LINUX) 144 #if defined(OS_LINUX)
136 // Only erase by line break on Linux and ChromeOS. 145 // Only erase by line break on Linux and ChromeOS.
137 if (shift) 146 if (shift)
138 return IDS_DELETE_TO_BEGINNING_OF_LINE; 147 return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
139 #endif 148 #endif
140 return IDS_DELETE_WORD_BACKWARD; 149 return ui::TextEditCommand::DELETE_WORD_BACKWARD;
141 case ui::VKEY_DELETE: 150 case ui::VKEY_DELETE:
142 #if defined(OS_LINUX) 151 #if defined(OS_LINUX)
143 // Only erase by line break on Linux and ChromeOS. 152 // Only erase by line break on Linux and ChromeOS.
144 if (shift && control) 153 if (shift && control)
145 return IDS_DELETE_TO_END_OF_LINE; 154 return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
146 #endif 155 #endif
147 if (control) 156 if (control)
148 return IDS_DELETE_WORD_FORWARD; 157 return ui::TextEditCommand::DELETE_WORD_FORWARD;
149 return shift ? IDS_APP_CUT : IDS_DELETE_FORWARD; 158 return shift ? ui::TextEditCommand::CUT
159 : ui::TextEditCommand::DELETE_FORWARD;
150 case ui::VKEY_INSERT: 160 case ui::VKEY_INSERT:
151 if (control && !shift) 161 if (control && !shift)
152 return IDS_APP_COPY; 162 return ui::TextEditCommand::COPY;
153 return (shift && !control) ? IDS_APP_PASTE : kNoCommand; 163 return (shift && !control) ? ui::TextEditCommand::PASTE
164 : ui::TextEditCommand::INVALID_COMMAND;
154 default: 165 default:
155 return kNoCommand; 166 return ui::TextEditCommand::INVALID_COMMAND;
156 } 167 }
157 } 168 }
158 169
159 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 170 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
160 // Convert a custom text edit |command| to the equivalent views command ID. 171 // Convert a custom text edit |command| to the equivalent views command ID.
161 int GetViewsCommand(const ui::TextEditCommandAuraLinux& command, bool rtl) { 172 ui::TextEditCommand GetViewsCommand(const ui::TextEditCommandAuraLinux& command,
173 bool rtl) {
162 const bool select = command.extend_selection(); 174 const bool select = command.extend_selection();
163 switch (command.command_id()) { 175 switch (command.command_id()) {
164 case ui::TextEditCommandAuraLinux::COPY: 176 case ui::TextEditCommandAuraLinux::COPY:
165 return IDS_APP_COPY; 177 return ui::TextEditCommand::COPY;
166 case ui::TextEditCommandAuraLinux::CUT: 178 case ui::TextEditCommandAuraLinux::CUT:
167 return IDS_APP_CUT; 179 return ui::TextEditCommand::CUT;
168 case ui::TextEditCommandAuraLinux::DELETE_BACKWARD: 180 case ui::TextEditCommandAuraLinux::DELETE_BACKWARD:
169 return IDS_DELETE_BACKWARD; 181 return ui::TextEditCommand::DELETE_BACKWARD;
170 case ui::TextEditCommandAuraLinux::DELETE_FORWARD: 182 case ui::TextEditCommandAuraLinux::DELETE_FORWARD:
171 return IDS_DELETE_FORWARD; 183 return ui::TextEditCommand::DELETE_FORWARD;
172 case ui::TextEditCommandAuraLinux::DELETE_TO_BEGINING_OF_LINE: 184 case ui::TextEditCommandAuraLinux::DELETE_TO_BEGINING_OF_LINE:
173 case ui::TextEditCommandAuraLinux::DELETE_TO_BEGINING_OF_PARAGRAPH: 185 case ui::TextEditCommandAuraLinux::DELETE_TO_BEGINING_OF_PARAGRAPH:
174 return IDS_DELETE_TO_BEGINNING_OF_LINE; 186 return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
175 case ui::TextEditCommandAuraLinux::DELETE_TO_END_OF_LINE: 187 case ui::TextEditCommandAuraLinux::DELETE_TO_END_OF_LINE:
176 case ui::TextEditCommandAuraLinux::DELETE_TO_END_OF_PARAGRAPH: 188 case ui::TextEditCommandAuraLinux::DELETE_TO_END_OF_PARAGRAPH:
177 return IDS_DELETE_TO_END_OF_LINE; 189 return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
178 case ui::TextEditCommandAuraLinux::DELETE_WORD_BACKWARD: 190 case ui::TextEditCommandAuraLinux::DELETE_WORD_BACKWARD:
179 return IDS_DELETE_WORD_BACKWARD; 191 return ui::TextEditCommand::DELETE_WORD_BACKWARD;
180 case ui::TextEditCommandAuraLinux::DELETE_WORD_FORWARD: 192 case ui::TextEditCommandAuraLinux::DELETE_WORD_FORWARD:
181 return IDS_DELETE_WORD_FORWARD; 193 return ui::TextEditCommand::DELETE_WORD_FORWARD;
182 case ui::TextEditCommandAuraLinux::INSERT_TEXT: 194 case ui::TextEditCommandAuraLinux::INSERT_TEXT:
183 return kNoCommand; 195 return ui::TextEditCommand::INVALID_COMMAND;
184 case ui::TextEditCommandAuraLinux::MOVE_BACKWARD: 196 case ui::TextEditCommandAuraLinux::MOVE_BACKWARD:
185 if (rtl) 197 if (rtl)
186 return select ? IDS_MOVE_RIGHT_AND_MODIFY_SELECTION : IDS_MOVE_RIGHT; 198 return select ? ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION
187 return select ? IDS_MOVE_LEFT_AND_MODIFY_SELECTION : IDS_MOVE_LEFT; 199 : ui::TextEditCommand::MOVE_RIGHT;
200 return select ? ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION
201 : ui::TextEditCommand::MOVE_LEFT;
188 case ui::TextEditCommandAuraLinux::MOVE_DOWN: 202 case ui::TextEditCommandAuraLinux::MOVE_DOWN:
189 return IDS_MOVE_DOWN; 203 return ui::TextEditCommand::MOVE_DOWN;
190 case ui::TextEditCommandAuraLinux::MOVE_FORWARD: 204 case ui::TextEditCommandAuraLinux::MOVE_FORWARD:
191 if (rtl) 205 if (rtl)
192 return select ? IDS_MOVE_LEFT_AND_MODIFY_SELECTION : IDS_MOVE_LEFT; 206 return select ? ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION
193 return select ? IDS_MOVE_RIGHT_AND_MODIFY_SELECTION : IDS_MOVE_RIGHT; 207 : ui::TextEditCommand::MOVE_LEFT;
208 return select ? ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION
209 : ui::TextEditCommand::MOVE_RIGHT;
194 case ui::TextEditCommandAuraLinux::MOVE_LEFT: 210 case ui::TextEditCommandAuraLinux::MOVE_LEFT:
195 return select ? IDS_MOVE_LEFT_AND_MODIFY_SELECTION : IDS_MOVE_LEFT; 211 return select ? ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION
212 : ui::TextEditCommand::MOVE_LEFT;
196 case ui::TextEditCommandAuraLinux::MOVE_PAGE_DOWN: 213 case ui::TextEditCommandAuraLinux::MOVE_PAGE_DOWN:
197 case ui::TextEditCommandAuraLinux::MOVE_PAGE_UP: 214 case ui::TextEditCommandAuraLinux::MOVE_PAGE_UP:
198 return kNoCommand; 215 return ui::TextEditCommand::INVALID_COMMAND;
199 case ui::TextEditCommandAuraLinux::MOVE_RIGHT: 216 case ui::TextEditCommandAuraLinux::MOVE_RIGHT:
200 return select ? IDS_MOVE_RIGHT_AND_MODIFY_SELECTION : IDS_MOVE_RIGHT; 217 return select ? ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION
218 : ui::TextEditCommand::MOVE_RIGHT;
201 case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINING_OF_DOCUMENT: 219 case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINING_OF_DOCUMENT:
202 case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINING_OF_LINE: 220 case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINING_OF_LINE:
203 case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINING_OF_PARAGRAPH: 221 case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINING_OF_PARAGRAPH:
204 return select ? IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION : 222 return select ? ui::TextEditCommand::
205 IDS_MOVE_TO_BEGINNING_OF_LINE; 223 MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION
224 : ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE;
206 case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_DOCUMENT: 225 case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_DOCUMENT:
207 case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_LINE: 226 case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_LINE:
208 case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_PARAGRAPH: 227 case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_PARAGRAPH:
209 return select ? IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION : 228 return select
210 IDS_MOVE_TO_END_OF_LINE; 229 ? ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION
230 : ui::TextEditCommand::MOVE_TO_END_OF_LINE;
211 case ui::TextEditCommandAuraLinux::MOVE_UP: 231 case ui::TextEditCommandAuraLinux::MOVE_UP:
212 return IDS_MOVE_UP; 232 return ui::TextEditCommand::MOVE_UP;
213 case ui::TextEditCommandAuraLinux::MOVE_WORD_BACKWARD: 233 case ui::TextEditCommandAuraLinux::MOVE_WORD_BACKWARD:
214 if (rtl) { 234 if (rtl) {
215 return select ? IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION : 235 return select
216 IDS_MOVE_WORD_RIGHT; 236 ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
237 : ui::TextEditCommand::MOVE_WORD_RIGHT;
217 } 238 }
218 return select ? IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION : 239 return select ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
219 IDS_MOVE_WORD_LEFT; 240 : ui::TextEditCommand::MOVE_WORD_LEFT;
220 case ui::TextEditCommandAuraLinux::MOVE_WORD_FORWARD: 241 case ui::TextEditCommandAuraLinux::MOVE_WORD_FORWARD:
221 if (rtl) { 242 if (rtl) {
222 return select ? IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION : 243 return select ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
223 IDS_MOVE_WORD_LEFT; 244 : ui::TextEditCommand::MOVE_WORD_LEFT;
224 } 245 }
225 return select ? IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION : 246 return select ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
226 IDS_MOVE_WORD_RIGHT; 247 : ui::TextEditCommand::MOVE_WORD_RIGHT;
227 case ui::TextEditCommandAuraLinux::MOVE_WORD_LEFT: 248 case ui::TextEditCommandAuraLinux::MOVE_WORD_LEFT:
228 return select ? IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION : 249 return select ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION
229 IDS_MOVE_WORD_LEFT; 250 : ui::TextEditCommand::MOVE_WORD_LEFT;
230 case ui::TextEditCommandAuraLinux::MOVE_WORD_RIGHT: 251 case ui::TextEditCommandAuraLinux::MOVE_WORD_RIGHT:
231 return select ? IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION : 252 return select ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
232 IDS_MOVE_WORD_RIGHT; 253 : ui::TextEditCommand::MOVE_WORD_RIGHT;
233 case ui::TextEditCommandAuraLinux::PASTE: 254 case ui::TextEditCommandAuraLinux::PASTE:
234 return IDS_APP_PASTE; 255 return ui::TextEditCommand::PASTE;
235 case ui::TextEditCommandAuraLinux::SELECT_ALL: 256 case ui::TextEditCommandAuraLinux::SELECT_ALL:
236 return IDS_APP_SELECT_ALL; 257 return ui::TextEditCommand::SELECT_ALL;
237 case ui::TextEditCommandAuraLinux::SET_MARK: 258 case ui::TextEditCommandAuraLinux::SET_MARK:
238 case ui::TextEditCommandAuraLinux::UNSELECT: 259 case ui::TextEditCommandAuraLinux::UNSELECT:
239 case ui::TextEditCommandAuraLinux::INVALID_COMMAND: 260 case ui::TextEditCommandAuraLinux::INVALID_COMMAND:
240 return kNoCommand; 261 return ui::TextEditCommand::INVALID_COMMAND;
241 } 262 }
242 return kNoCommand; 263 NOTREACHED();
264 return ui::TextEditCommand::INVALID_COMMAND;
243 } 265 }
244 #endif 266 #endif
245 267
246 const gfx::FontList& GetDefaultFontList() { 268 const gfx::FontList& GetDefaultFontList() {
247 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 269 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
248 return rb.GetFontListWithDelta(ui::kLabelFontSizeDelta); 270 return rb.GetFontListWithDelta(ui::kLabelFontSizeDelta);
249 } 271 }
250 272
251 // Returns true if |command_id| is a menu action installed by this textfield. 273 // Returns ui::TextEditCommand corresponding to |command_id| menu action. Keep
msw 2016/06/10 00:48:51 nit: "returns the", "to the"
karandeepb 2016/06/10 08:20:46 Done.
252 // Keep in sync with UpdateContextMenu. 274 // in sync with UpdateContextMenu.
253 bool IsMenuCommand(int command_id) { 275 ui::TextEditCommand GetTextEditCommandFromMenuCommand(int command_id) {
254 switch (command_id) { 276 switch (command_id) {
255 case IDS_APP_UNDO: 277 case IDS_APP_UNDO:
278 return ui::TextEditCommand::UNDO;
256 case IDS_APP_CUT: 279 case IDS_APP_CUT:
280 return ui::TextEditCommand::CUT;
257 case IDS_APP_COPY: 281 case IDS_APP_COPY:
282 return ui::TextEditCommand::COPY;
258 case IDS_APP_PASTE: 283 case IDS_APP_PASTE:
284 return ui::TextEditCommand::PASTE;
259 case IDS_APP_DELETE: 285 case IDS_APP_DELETE:
286 return ui::TextEditCommand::DELETE_SELECTION;
260 case IDS_APP_SELECT_ALL: 287 case IDS_APP_SELECT_ALL:
261 return true; 288 return ui::TextEditCommand::SELECT_ALL;
289 default:
290 return ui::TextEditCommand::INVALID_COMMAND;
262 } 291 }
263 return false;
264 } 292 }
265 293
266 } // namespace 294 } // namespace
267 295
268 // static 296 // static
269 const char Textfield::kViewClassName[] = "Textfield"; 297 const char Textfield::kViewClassName[] = "Textfield";
270 const int Textfield::kTextPadding = 3; 298 const int Textfield::kTextPadding = 3;
271 299
272 // static 300 // static
273 size_t Textfield::GetCaretBlinkMs() { 301 size_t Textfield::GetCaretBlinkMs() {
274 static const size_t default_value = 500; 302 static const size_t default_value = 500;
275 #if defined(OS_WIN) 303 #if defined(OS_WIN)
276 static const size_t system_value = ::GetCaretBlinkTime(); 304 static const size_t system_value = ::GetCaretBlinkTime();
277 if (system_value != 0) 305 if (system_value != 0)
278 return (system_value == INFINITE) ? 0 : system_value; 306 return (system_value == INFINITE) ? 0 : system_value;
279 #endif 307 #endif
280 return default_value; 308 return default_value;
281 } 309 }
282 310
283 Textfield::Textfield() 311 Textfield::Textfield()
284 : model_(new TextfieldModel(this)), 312 : model_(new TextfieldModel(this)),
285 controller_(NULL), 313 controller_(NULL),
286 scheduled_edit_command_(kNoCommand), 314 scheduled_edit_command_(ui::TextEditCommand::INVALID_COMMAND),
287 read_only_(false), 315 read_only_(false),
288 default_width_in_chars_(0), 316 default_width_in_chars_(0),
289 use_default_text_color_(true), 317 use_default_text_color_(true),
290 use_default_background_color_(true), 318 use_default_background_color_(true),
291 use_default_selection_text_color_(true), 319 use_default_selection_text_color_(true),
292 use_default_selection_background_color_(true), 320 use_default_selection_background_color_(true),
293 text_color_(SK_ColorBLACK), 321 text_color_(SK_ColorBLACK),
294 background_color_(SK_ColorWHITE), 322 background_color_(SK_ColorWHITE),
295 selection_text_color_(SK_ColorWHITE), 323 selection_text_color_(SK_ColorWHITE),
296 selection_background_color_(SK_ColorBLUE), 324 selection_background_color_(SK_ColorBLUE),
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 drag_selection_timer_.Stop(); 729 drag_selection_timer_.Stop();
702 // Cancel suspected drag initiations, the user was clicking in the selection. 730 // Cancel suspected drag initiations, the user was clicking in the selection.
703 if (initiating_drag_) 731 if (initiating_drag_)
704 MoveCursorTo(event.location(), false); 732 MoveCursorTo(event.location(), false);
705 initiating_drag_ = false; 733 initiating_drag_ = false;
706 UpdateSelectionClipboard(); 734 UpdateSelectionClipboard();
707 OnAfterUserAction(); 735 OnAfterUserAction();
708 } 736 }
709 737
710 bool Textfield::OnKeyPressed(const ui::KeyEvent& event) { 738 bool Textfield::OnKeyPressed(const ui::KeyEvent& event) {
711 int edit_command = scheduled_edit_command_; 739 ui::TextEditCommand edit_command = scheduled_edit_command_;
712 scheduled_edit_command_ = kNoCommand; 740 scheduled_edit_command_ = ui::TextEditCommand::INVALID_COMMAND;
713 741
714 // Since HandleKeyEvent() might destroy |this|, get a weak pointer and verify 742 // Since HandleKeyEvent() might destroy |this|, get a weak pointer and verify
715 // it isn't null before proceeding. 743 // it isn't null before proceeding.
716 base::WeakPtr<Textfield> textfield(weak_ptr_factory_.GetWeakPtr()); 744 base::WeakPtr<Textfield> textfield(weak_ptr_factory_.GetWeakPtr());
717 745
718 bool handled = controller_ && controller_->HandleKeyEvent(this, event); 746 bool handled = controller_ && controller_->HandleKeyEvent(this, event);
719 747
720 if (!textfield) 748 if (!textfield)
721 return handled; 749 return handled;
722 750
723 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 751 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
724 ui::TextEditKeyBindingsDelegateAuraLinux* delegate = 752 ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
725 ui::GetTextEditKeyBindingsDelegate(); 753 ui::GetTextEditKeyBindingsDelegate();
726 std::vector<ui::TextEditCommandAuraLinux> commands; 754 std::vector<ui::TextEditCommandAuraLinux> commands;
727 if (!handled && delegate && delegate->MatchEvent(event, &commands)) { 755 if (!handled && delegate && delegate->MatchEvent(event, &commands)) {
728 const bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT; 756 const bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT;
729 for (size_t i = 0; i < commands.size(); ++i) { 757 for (size_t i = 0; i < commands.size(); ++i) {
730 const int command = GetViewsCommand(commands[i], rtl); 758 const ui::TextEditCommand command = GetViewsCommand(commands[i], rtl);
731 if (IsEditCommandEnabled(command)) { 759 if (IsEditCommandEnabled(command)) {
732 ExecuteEditCommand(command); 760 ExecuteEditCommand(command);
733 handled = true; 761 handled = true;
734 } 762 }
735 } 763 }
736 return handled; 764 return handled;
737 } 765 }
738 #endif 766 #endif
739 767
740 if (edit_command == kNoCommand) 768 if (edit_command == ui::TextEditCommand::INVALID_COMMAND)
741 edit_command = GetCommandForKeyEvent(event); 769 edit_command = GetCommandForKeyEvent(event);
742 770
743 if (!handled && IsEditCommandEnabled(edit_command)) { 771 if (!handled && IsEditCommandEnabled(edit_command)) {
744 ExecuteEditCommand(edit_command); 772 ExecuteEditCommand(edit_command);
745 handled = true; 773 handled = true;
746 } 774 }
747 return handled; 775 return handled;
748 } 776 }
749 777
750 void Textfield::OnGestureEvent(ui::GestureEvent* event) { 778 void Textfield::OnGestureEvent(ui::GestureEvent* event) {
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1232 } 1260 }
1233 1261
1234 //////////////////////////////////////////////////////////////////////////////// 1262 ////////////////////////////////////////////////////////////////////////////////
1235 // Textfield, ui::SimpleMenuModel::Delegate overrides: 1263 // Textfield, ui::SimpleMenuModel::Delegate overrides:
1236 1264
1237 bool Textfield::IsCommandIdChecked(int command_id) const { 1265 bool Textfield::IsCommandIdChecked(int command_id) const {
1238 return true; 1266 return true;
1239 } 1267 }
1240 1268
1241 bool Textfield::IsCommandIdEnabled(int command_id) const { 1269 bool Textfield::IsCommandIdEnabled(int command_id) const {
1242 return IsMenuCommand(command_id) && 1270 return Textfield::IsEditCommandEnabled(
1243 Textfield::IsEditCommandEnabled(command_id); 1271 GetTextEditCommandFromMenuCommand(command_id));
1244 } 1272 }
1245 1273
1246 bool Textfield::GetAcceleratorForCommandId(int command_id, 1274 bool Textfield::GetAcceleratorForCommandId(int command_id,
1247 ui::Accelerator* accelerator) { 1275 ui::Accelerator* accelerator) {
1248 switch (command_id) { 1276 switch (command_id) {
1249 case IDS_APP_UNDO: 1277 case IDS_APP_UNDO:
1250 *accelerator = ui::Accelerator(ui::VKEY_Z, ui::EF_CONTROL_DOWN); 1278 *accelerator = ui::Accelerator(ui::VKEY_Z, ui::EF_CONTROL_DOWN);
1251 return true; 1279 return true;
1252 1280
1253 case IDS_APP_CUT: 1281 case IDS_APP_CUT:
(...skipping 11 matching lines...) Expand all
1265 case IDS_APP_SELECT_ALL: 1293 case IDS_APP_SELECT_ALL:
1266 *accelerator = ui::Accelerator(ui::VKEY_A, ui::EF_CONTROL_DOWN); 1294 *accelerator = ui::Accelerator(ui::VKEY_A, ui::EF_CONTROL_DOWN);
1267 return true; 1295 return true;
1268 1296
1269 default: 1297 default:
1270 return false; 1298 return false;
1271 } 1299 }
1272 } 1300 }
1273 1301
1274 void Textfield::ExecuteCommand(int command_id, int event_flags) { 1302 void Textfield::ExecuteCommand(int command_id, int event_flags) {
1275 DestroyTouchSelection(); 1303 Textfield::ExecuteEditCommand(GetTextEditCommandFromMenuCommand(command_id));
1276 if (!Textfield::IsCommandIdEnabled(command_id))
1277 return;
1278 Textfield::ExecuteEditCommand(command_id);
1279 } 1304 }
1280 1305
1281 //////////////////////////////////////////////////////////////////////////////// 1306 ////////////////////////////////////////////////////////////////////////////////
1282 // Textfield, ui::TextInputClient overrides: 1307 // Textfield, ui::TextInputClient overrides:
1283 1308
1284 void Textfield::SetCompositionText(const ui::CompositionText& composition) { 1309 void Textfield::SetCompositionText(const ui::CompositionText& composition) {
1285 if (GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE) 1310 if (GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE)
1286 return; 1311 return;
1287 1312
1288 OnBeforeUserAction(); 1313 OnBeforeUserAction();
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1490 1515
1491 range.set_start(range.start() - before); 1516 range.set_start(range.start() - before);
1492 range.set_end(range.end() + after); 1517 range.set_end(range.end() + after);
1493 gfx::Range text_range; 1518 gfx::Range text_range;
1494 if (GetTextRange(&text_range) && text_range.Contains(range)) 1519 if (GetTextRange(&text_range) && text_range.Contains(range))
1495 DeleteRange(range); 1520 DeleteRange(range);
1496 } 1521 }
1497 1522
1498 void Textfield::EnsureCaretInRect(const gfx::Rect& rect) {} 1523 void Textfield::EnsureCaretInRect(const gfx::Rect& rect) {}
1499 1524
1500 bool Textfield::IsEditCommandEnabled(int command_id) const { 1525 bool Textfield::IsEditCommandEnabled(ui::TextEditCommand command) const {
1501 base::string16 result; 1526 base::string16 result;
1502 bool editable = !read_only(); 1527 bool editable = !read_only();
1503 bool readable = text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD; 1528 bool readable = text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD;
1504 switch (command_id) { 1529 switch (command) {
1505 case IDS_APP_UNDO: 1530 case ui::TextEditCommand::INVALID_COMMAND:
1531 return false;
1532 case ui::TextEditCommand::UNDO:
1506 return editable && model_->CanUndo(); 1533 return editable && model_->CanUndo();
1507 case IDS_APP_REDO: 1534 case ui::TextEditCommand::REDO:
1508 return editable && model_->CanRedo(); 1535 return editable && model_->CanRedo();
1509 case IDS_APP_CUT: 1536 case ui::TextEditCommand::CUT:
1510 return editable && readable && model_->HasSelection(); 1537 return editable && readable && model_->HasSelection();
1511 case IDS_APP_COPY: 1538 case ui::TextEditCommand::COPY:
1512 return readable && model_->HasSelection(); 1539 return readable && model_->HasSelection();
1513 case IDS_APP_PASTE: 1540 case ui::TextEditCommand::PASTE:
1514 ui::Clipboard::GetForCurrentThread()->ReadText( 1541 ui::Clipboard::GetForCurrentThread()->ReadText(
1515 ui::CLIPBOARD_TYPE_COPY_PASTE, &result); 1542 ui::CLIPBOARD_TYPE_COPY_PASTE, &result);
1516 return editable && !result.empty(); 1543 return editable && !result.empty();
1517 case IDS_APP_DELETE: 1544 case ui::TextEditCommand::DELETE_SELECTION:
1518 return editable && model_->HasSelection(); 1545 return editable && model_->HasSelection();
1519 case IDS_APP_SELECT_ALL: 1546 case ui::TextEditCommand::SELECT_ALL:
1520 return !text().empty(); 1547 return !text().empty();
1521 case IDS_DELETE_FORWARD: 1548 case ui::TextEditCommand::DELETE_FORWARD:
1522 case IDS_DELETE_BACKWARD: 1549 case ui::TextEditCommand::DELETE_BACKWARD:
1523 case IDS_DELETE_TO_BEGINNING_OF_LINE: 1550 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE:
1524 case IDS_DELETE_TO_END_OF_LINE: 1551 case ui::TextEditCommand::DELETE_TO_END_OF_LINE:
1525 case IDS_DELETE_WORD_BACKWARD: 1552 case ui::TextEditCommand::DELETE_WORD_BACKWARD:
1526 case IDS_DELETE_WORD_FORWARD: 1553 case ui::TextEditCommand::DELETE_WORD_FORWARD:
1527 return editable; 1554 return editable;
1528 case IDS_MOVE_LEFT: 1555 case ui::TextEditCommand::MOVE_LEFT:
1529 case IDS_MOVE_LEFT_AND_MODIFY_SELECTION: 1556 case ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION:
1530 case IDS_MOVE_RIGHT: 1557 case ui::TextEditCommand::MOVE_RIGHT:
1531 case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION: 1558 case ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION:
1532 case IDS_MOVE_WORD_LEFT: 1559 case ui::TextEditCommand::MOVE_WORD_LEFT:
1533 case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION: 1560 case ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
1534 case IDS_MOVE_WORD_RIGHT: 1561 case ui::TextEditCommand::MOVE_WORD_RIGHT:
1535 case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: 1562 case ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
1536 case IDS_MOVE_TO_BEGINNING_OF_LINE: 1563 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE:
1537 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: 1564 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
1538 case IDS_MOVE_TO_END_OF_LINE: 1565 case ui::TextEditCommand::MOVE_TO_END_OF_LINE:
1539 case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: 1566 case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
1540 return true; 1567 return true;
1541 default: 1568 case ui::TextEditCommand::MOVE_UP:
1569 case ui::TextEditCommand::MOVE_DOWN:
1542 return false; 1570 return false;
1543 } 1571 }
1572 NOTREACHED();
1573 return false;
1544 } 1574 }
1545 1575
1546 void Textfield::SetEditCommandForNextKeyEvent(int command_id) { 1576 void Textfield::SetEditCommandForNextKeyEvent(ui::TextEditCommand command) {
1547 DCHECK_EQ(kNoCommand, scheduled_edit_command_); 1577 DCHECK(scheduled_edit_command_ == ui::TextEditCommand::INVALID_COMMAND);
msw 2016/06/10 00:48:51 nit: why not DCHECK_EQ?
karandeepb 2016/06/10 08:20:46 Done. I maybe wrong but I think this was giving a
1548 scheduled_edit_command_ = command_id; 1578 scheduled_edit_command_ = command;
1549 } 1579 }
1550 1580
1551 //////////////////////////////////////////////////////////////////////////////// 1581 ////////////////////////////////////////////////////////////////////////////////
1552 // Textfield, protected: 1582 // Textfield, protected:
1553 1583
1554 void Textfield::DoInsertChar(base::char16 ch) { 1584 void Textfield::DoInsertChar(base::char16 ch) {
1555 OnBeforeUserAction(); 1585 OnBeforeUserAction();
1556 skip_input_method_cancel_composition_ = true; 1586 skip_input_method_cancel_composition_ = true;
1557 if (GetRenderText()->insert_mode()) 1587 if (GetRenderText()->insert_mode())
1558 model_->InsertChar(ch); 1588 model_->InsertChar(ch);
1559 else 1589 else
1560 model_->ReplaceChar(ch); 1590 model_->ReplaceChar(ch);
1561 skip_input_method_cancel_composition_ = false; 1591 skip_input_method_cancel_composition_ = false;
1562 1592
1563 UpdateAfterChange(true, true); 1593 UpdateAfterChange(true, true);
1564 OnAfterUserAction(); 1594 OnAfterUserAction();
1565 } 1595 }
1566 1596
1567 gfx::RenderText* Textfield::GetRenderText() const { 1597 gfx::RenderText* Textfield::GetRenderText() const {
1568 return model_->render_text(); 1598 return model_->render_text();
1569 } 1599 }
1570 1600
1571 base::string16 Textfield::GetSelectionClipboardText() const { 1601 base::string16 Textfield::GetSelectionClipboardText() const {
1572 base::string16 selection_clipboard_text; 1602 base::string16 selection_clipboard_text;
1573 ui::Clipboard::GetForCurrentThread()->ReadText( 1603 ui::Clipboard::GetForCurrentThread()->ReadText(
1574 ui::CLIPBOARD_TYPE_SELECTION, &selection_clipboard_text); 1604 ui::CLIPBOARD_TYPE_SELECTION, &selection_clipboard_text);
1575 return selection_clipboard_text; 1605 return selection_clipboard_text;
1576 } 1606 }
1577 1607
1578 void Textfield::ExecuteEditCommand(int command_id) { 1608 void Textfield::ExecuteEditCommand(ui::TextEditCommand command) {
1579 DestroyTouchSelection(); 1609 DestroyTouchSelection();
1580 1610
1581 // Some codepaths may bypass GetCommandForKeyEvent, so any selection-dependent 1611 // Some codepaths may bypass GetCommandForKeyEvent, so any selection-dependent
1582 // modifications of the command should happen here. 1612 // modifications of the command should happen here.
1583 if (HasSelection()) { 1613 if (HasSelection()) {
1584 switch (command_id) { 1614 switch (command) {
1585 case IDS_DELETE_WORD_BACKWARD: 1615 case ui::TextEditCommand::DELETE_WORD_BACKWARD:
1586 case IDS_DELETE_TO_BEGINNING_OF_LINE: 1616 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE:
1587 command_id = IDS_DELETE_BACKWARD; 1617 command = ui::TextEditCommand::DELETE_BACKWARD;
1588 break; 1618 break;
1589 case IDS_DELETE_WORD_FORWARD: 1619 case ui::TextEditCommand::DELETE_WORD_FORWARD:
1590 case IDS_DELETE_TO_END_OF_LINE: 1620 case ui::TextEditCommand::DELETE_TO_END_OF_LINE:
1591 command_id = IDS_DELETE_FORWARD; 1621 command = ui::TextEditCommand::DELETE_FORWARD;
1622 break;
1623 default:
1592 break; 1624 break;
1593 } 1625 }
1594 } 1626 }
1595 1627
1596 // We only execute the commands enabled in Textfield::IsEditCommandEnabled 1628 // We only execute the commands enabled in Textfield::IsEditCommandEnabled
1597 // below. Hence don't do a virtual IsEditCommandEnabled call. 1629 // below. Hence don't do a virtual IsEditCommandEnabled call.
1598 if (!Textfield::IsEditCommandEnabled(command_id)) 1630 if (!Textfield::IsEditCommandEnabled(command))
1599 return; 1631 return;
1600 1632
1601 bool text_changed = false; 1633 bool text_changed = false;
1602 bool cursor_changed = false; 1634 bool cursor_changed = false;
1603 bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT; 1635 bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT;
1604 gfx::VisualCursorDirection begin = rtl ? gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT; 1636 gfx::VisualCursorDirection begin = rtl ? gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT;
1605 gfx::VisualCursorDirection end = rtl ? gfx::CURSOR_LEFT : gfx::CURSOR_RIGHT; 1637 gfx::VisualCursorDirection end = rtl ? gfx::CURSOR_LEFT : gfx::CURSOR_RIGHT;
1606 gfx::SelectionModel selection_model = GetSelectionModel(); 1638 gfx::SelectionModel selection_model = GetSelectionModel();
1607 1639
1608 OnBeforeUserAction(); 1640 OnBeforeUserAction();
1609 switch (command_id) { 1641 switch (command) {
1610 case IDS_APP_UNDO: 1642 case ui::TextEditCommand::UNDO:
1611 text_changed = cursor_changed = model_->Undo(); 1643 text_changed = cursor_changed = model_->Undo();
1612 break; 1644 break;
1613 case IDS_APP_REDO: 1645 case ui::TextEditCommand::REDO:
1614 text_changed = cursor_changed = model_->Redo(); 1646 text_changed = cursor_changed = model_->Redo();
1615 break; 1647 break;
1616 case IDS_APP_CUT: 1648 case ui::TextEditCommand::CUT:
1617 text_changed = cursor_changed = Cut(); 1649 text_changed = cursor_changed = Cut();
1618 break; 1650 break;
1619 case IDS_APP_COPY: 1651 case ui::TextEditCommand::COPY:
1620 Copy(); 1652 Copy();
1621 break; 1653 break;
1622 case IDS_APP_PASTE: 1654 case ui::TextEditCommand::PASTE:
1623 text_changed = cursor_changed = Paste(); 1655 text_changed = cursor_changed = Paste();
1624 break; 1656 break;
1625 case IDS_APP_DELETE: 1657 case ui::TextEditCommand::DELETE_SELECTION:
1626 text_changed = cursor_changed = model_->Delete(); 1658 text_changed = cursor_changed = model_->Delete();
1627 break; 1659 break;
1628 case IDS_APP_SELECT_ALL: 1660 case ui::TextEditCommand::SELECT_ALL:
1629 SelectAll(false); 1661 SelectAll(false);
1630 break; 1662 break;
1631 case IDS_DELETE_BACKWARD: 1663 case ui::TextEditCommand::DELETE_BACKWARD:
1632 text_changed = cursor_changed = model_->Backspace(); 1664 text_changed = cursor_changed = model_->Backspace();
1633 break; 1665 break;
1634 case IDS_DELETE_FORWARD: 1666 case ui::TextEditCommand::DELETE_FORWARD:
1635 text_changed = cursor_changed = model_->Delete(); 1667 text_changed = cursor_changed = model_->Delete();
1636 break; 1668 break;
1637 case IDS_DELETE_TO_END_OF_LINE: 1669 case ui::TextEditCommand::DELETE_TO_END_OF_LINE:
1638 model_->MoveCursor(gfx::LINE_BREAK, end, true); 1670 model_->MoveCursor(gfx::LINE_BREAK, end, true);
1639 text_changed = cursor_changed = model_->Delete(); 1671 text_changed = cursor_changed = model_->Delete();
1640 break; 1672 break;
1641 case IDS_DELETE_TO_BEGINNING_OF_LINE: 1673 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE:
1642 model_->MoveCursor(gfx::LINE_BREAK, begin, true); 1674 model_->MoveCursor(gfx::LINE_BREAK, begin, true);
1643 text_changed = cursor_changed = model_->Backspace(); 1675 text_changed = cursor_changed = model_->Backspace();
1644 break; 1676 break;
1645 case IDS_DELETE_WORD_BACKWARD: 1677 case ui::TextEditCommand::DELETE_WORD_BACKWARD:
1646 model_->MoveCursor(gfx::WORD_BREAK, begin, true); 1678 model_->MoveCursor(gfx::WORD_BREAK, begin, true);
1647 text_changed = cursor_changed = model_->Backspace(); 1679 text_changed = cursor_changed = model_->Backspace();
1648 break; 1680 break;
1649 case IDS_DELETE_WORD_FORWARD: 1681 case ui::TextEditCommand::DELETE_WORD_FORWARD:
1650 model_->MoveCursor(gfx::WORD_BREAK, end, true); 1682 model_->MoveCursor(gfx::WORD_BREAK, end, true);
1651 text_changed = cursor_changed = model_->Delete(); 1683 text_changed = cursor_changed = model_->Delete();
1652 break; 1684 break;
1653 case IDS_MOVE_LEFT: 1685 case ui::TextEditCommand::MOVE_LEFT:
1654 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, false); 1686 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, false);
1655 break; 1687 break;
1656 case IDS_MOVE_LEFT_AND_MODIFY_SELECTION: 1688 case ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION:
1657 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, true); 1689 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, true);
1658 break; 1690 break;
1659 case IDS_MOVE_RIGHT: 1691 case ui::TextEditCommand::MOVE_RIGHT:
1660 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, false); 1692 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, false);
1661 break; 1693 break;
1662 case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION: 1694 case ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION:
1663 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, true); 1695 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, true);
1664 break; 1696 break;
1665 case IDS_MOVE_WORD_LEFT: 1697 case ui::TextEditCommand::MOVE_WORD_LEFT:
1666 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false); 1698 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false);
1667 break; 1699 break;
1668 case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION: 1700 case ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
1669 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); 1701 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true);
1670 break; 1702 break;
1671 case IDS_MOVE_WORD_RIGHT: 1703 case ui::TextEditCommand::MOVE_WORD_RIGHT:
1672 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false); 1704 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false);
1673 break; 1705 break;
1674 case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: 1706 case ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
1675 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true); 1707 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true);
1676 break; 1708 break;
1677 case IDS_MOVE_TO_BEGINNING_OF_LINE: 1709 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE:
1678 model_->MoveCursor(gfx::LINE_BREAK, begin, false); 1710 model_->MoveCursor(gfx::LINE_BREAK, begin, false);
1679 break; 1711 break;
1680 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: 1712 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
1681 model_->MoveCursor(gfx::LINE_BREAK, begin, true); 1713 model_->MoveCursor(gfx::LINE_BREAK, begin, true);
1682 break; 1714 break;
1683 case IDS_MOVE_TO_END_OF_LINE: 1715 case ui::TextEditCommand::MOVE_TO_END_OF_LINE:
1684 model_->MoveCursor(gfx::LINE_BREAK, end, false); 1716 model_->MoveCursor(gfx::LINE_BREAK, end, false);
1685 break; 1717 break;
1686 case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: 1718 case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
1687 model_->MoveCursor(gfx::LINE_BREAK, end, true); 1719 model_->MoveCursor(gfx::LINE_BREAK, end, true);
1688 break; 1720 break;
1689 default: 1721 case ui::TextEditCommand::MOVE_UP:
1722 case ui::TextEditCommand::MOVE_DOWN:
1723 case ui::TextEditCommand::INVALID_COMMAND:
1690 NOTREACHED(); 1724 NOTREACHED();
1691 break; 1725 break;
1692 } 1726 }
1693 1727
1694 cursor_changed |= GetSelectionModel() != selection_model; 1728 cursor_changed |= GetSelectionModel() != selection_model;
1695 if (cursor_changed) 1729 if (cursor_changed)
1696 UpdateSelectionClipboard(); 1730 UpdateSelectionClipboard();
1697 UpdateAfterChange(text_changed, cursor_changed); 1731 UpdateAfterChange(text_changed, cursor_changed);
1698 OnAfterUserAction(); 1732 OnAfterUserAction();
1699 } 1733 }
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1953 RequestFocus(); 1987 RequestFocus();
1954 model_->MoveCursorTo(mouse); 1988 model_->MoveCursorTo(mouse);
1955 if (!selection_clipboard_text.empty()) { 1989 if (!selection_clipboard_text.empty()) {
1956 model_->InsertText(selection_clipboard_text); 1990 model_->InsertText(selection_clipboard_text);
1957 UpdateAfterChange(true, true); 1991 UpdateAfterChange(true, true);
1958 } 1992 }
1959 OnAfterUserAction(); 1993 OnAfterUserAction();
1960 } 1994 }
1961 1995
1962 } // namespace views 1996 } // namespace views
OLDNEW
« ui/strings/ui_strings.grd ('K') | « ui/views/controls/textfield/textfield.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698