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

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