| OLD | NEW |
| 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" |
| (...skipping 1247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1258 case IDS_MOVE_LEFT: | 1258 case IDS_MOVE_LEFT: |
| 1259 case IDS_MOVE_LEFT_AND_MODIFY_SELECTION: | 1259 case IDS_MOVE_LEFT_AND_MODIFY_SELECTION: |
| 1260 case IDS_MOVE_RIGHT: | 1260 case IDS_MOVE_RIGHT: |
| 1261 case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION: | 1261 case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION: |
| 1262 case IDS_MOVE_WORD_LEFT: | 1262 case IDS_MOVE_WORD_LEFT: |
| 1263 case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION: | 1263 case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION: |
| 1264 case IDS_MOVE_WORD_RIGHT: | 1264 case IDS_MOVE_WORD_RIGHT: |
| 1265 case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: | 1265 case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: |
| 1266 case IDS_MOVE_TO_BEGINNING_OF_LINE: | 1266 case IDS_MOVE_TO_BEGINNING_OF_LINE: |
| 1267 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: | 1267 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: |
| 1268 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_EXTEND_SELECTION: |
| 1269 case IDS_MOVE_TOWARDS_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: |
| 1268 case IDS_MOVE_TO_END_OF_LINE: | 1270 case IDS_MOVE_TO_END_OF_LINE: |
| 1269 case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: | 1271 case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: |
| 1272 case IDS_MOVE_TO_END_OF_LINE_AND_EXTEND_SELECTION: |
| 1273 case IDS_MOVE_TOWARDS_END_OF_LINE_AND_MODIFY_SELECTION: |
| 1270 return true; | 1274 return true; |
| 1271 default: | 1275 default: |
| 1272 return false; | 1276 return false; |
| 1273 } | 1277 } |
| 1274 } | 1278 } |
| 1275 | 1279 |
| 1276 bool Textfield::GetAcceleratorForCommandId(int command_id, | 1280 bool Textfield::GetAcceleratorForCommandId(int command_id, |
| 1277 ui::Accelerator* accelerator) { | 1281 ui::Accelerator* accelerator) { |
| 1278 switch (command_id) { | 1282 switch (command_id) { |
| 1279 case IDS_APP_UNDO: | 1283 case IDS_APP_UNDO: |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1322 if (!IsCommandIdEnabled(command_id)) | 1326 if (!IsCommandIdEnabled(command_id)) |
| 1323 return; | 1327 return; |
| 1324 | 1328 |
| 1325 bool text_changed = false; | 1329 bool text_changed = false; |
| 1326 bool cursor_changed = false; | 1330 bool cursor_changed = false; |
| 1327 bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT; | 1331 bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT; |
| 1328 gfx::VisualCursorDirection begin = rtl ? gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT; | 1332 gfx::VisualCursorDirection begin = rtl ? gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT; |
| 1329 gfx::VisualCursorDirection end = rtl ? gfx::CURSOR_LEFT : gfx::CURSOR_RIGHT; | 1333 gfx::VisualCursorDirection end = rtl ? gfx::CURSOR_LEFT : gfx::CURSOR_RIGHT; |
| 1330 gfx::SelectionModel selection_model = GetSelectionModel(); | 1334 gfx::SelectionModel selection_model = GetSelectionModel(); |
| 1331 | 1335 |
| 1336 #if defined(OS_MACOSX) |
| 1337 gfx::SelectionReversedBehavior word_selection = gfx::SELECTION_CARET; |
| 1338 #else |
| 1339 gfx::SelectionReversedBehavior word_selection = gfx::SELECTION_START_NEW; |
| 1340 #endif |
| 1341 |
| 1332 OnBeforeUserAction(); | 1342 OnBeforeUserAction(); |
| 1333 switch (command_id) { | 1343 switch (command_id) { |
| 1334 case IDS_APP_UNDO: | 1344 case IDS_APP_UNDO: |
| 1335 text_changed = cursor_changed = model_->Undo(); | 1345 text_changed = cursor_changed = model_->Undo(); |
| 1336 break; | 1346 break; |
| 1337 case IDS_APP_REDO: | 1347 case IDS_APP_REDO: |
| 1338 text_changed = cursor_changed = model_->Redo(); | 1348 text_changed = cursor_changed = model_->Redo(); |
| 1339 break; | 1349 break; |
| 1340 case IDS_APP_CUT: | 1350 case IDS_APP_CUT: |
| 1341 text_changed = cursor_changed = Cut(); | 1351 text_changed = cursor_changed = Cut(); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1383 case IDS_MOVE_RIGHT: | 1393 case IDS_MOVE_RIGHT: |
| 1384 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, false); | 1394 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, false); |
| 1385 break; | 1395 break; |
| 1386 case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION: | 1396 case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION: |
| 1387 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, true); | 1397 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, true); |
| 1388 break; | 1398 break; |
| 1389 case IDS_MOVE_WORD_LEFT: | 1399 case IDS_MOVE_WORD_LEFT: |
| 1390 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false); | 1400 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false); |
| 1391 break; | 1401 break; |
| 1392 case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION: | 1402 case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION: |
| 1393 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); | 1403 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true, |
| 1404 word_selection); |
| 1394 break; | 1405 break; |
| 1395 case IDS_MOVE_WORD_RIGHT: | 1406 case IDS_MOVE_WORD_RIGHT: |
| 1396 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false); | 1407 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false); |
| 1397 break; | 1408 break; |
| 1398 case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: | 1409 case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: |
| 1399 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true); | 1410 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true, |
| 1411 word_selection); |
| 1400 break; | 1412 break; |
| 1401 case IDS_MOVE_TO_BEGINNING_OF_LINE: | 1413 case IDS_MOVE_TO_BEGINNING_OF_LINE: |
| 1402 model_->MoveCursor(gfx::LINE_BREAK, begin, false); | 1414 model_->MoveCursor(gfx::LINE_BREAK, begin, false); |
| 1403 break; | 1415 break; |
| 1404 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: | 1416 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: |
| 1405 model_->MoveCursor(gfx::LINE_BREAK, begin, true); | 1417 model_->MoveCursor(gfx::LINE_BREAK, begin, true, |
| 1418 gfx::SELECTION_START_NEW); |
| 1419 break; |
| 1420 case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_EXTEND_SELECTION: |
| 1421 model_->MoveCursor(gfx::LINE_BREAK, begin, true, gfx::SELECTION_EXTEND); |
| 1422 break; |
| 1423 case IDS_MOVE_TOWARDS_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: |
| 1424 model_->MoveCursor(gfx::LINE_BREAK, begin, true, gfx::SELECTION_CARET); |
| 1406 break; | 1425 break; |
| 1407 case IDS_MOVE_TO_END_OF_LINE: | 1426 case IDS_MOVE_TO_END_OF_LINE: |
| 1408 model_->MoveCursor(gfx::LINE_BREAK, end, false); | 1427 model_->MoveCursor(gfx::LINE_BREAK, end, false); |
| 1409 break; | 1428 break; |
| 1410 case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: | 1429 case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: |
| 1411 model_->MoveCursor(gfx::LINE_BREAK, end, true); | 1430 model_->MoveCursor(gfx::LINE_BREAK, end, true, gfx::SELECTION_START_NEW); |
| 1431 break; |
| 1432 case IDS_MOVE_TO_END_OF_LINE_AND_EXTEND_SELECTION: |
| 1433 model_->MoveCursor(gfx::LINE_BREAK, end, true, gfx::SELECTION_EXTEND); |
| 1434 break; |
| 1435 case IDS_MOVE_TOWARDS_END_OF_LINE_AND_MODIFY_SELECTION: |
| 1436 model_->MoveCursor(gfx::LINE_BREAK, end, true, gfx::SELECTION_CARET); |
| 1412 break; | 1437 break; |
| 1413 default: | 1438 default: |
| 1414 NOTREACHED(); | 1439 NOTREACHED(); |
| 1415 break; | 1440 break; |
| 1416 } | 1441 } |
| 1417 | 1442 |
| 1418 cursor_changed |= GetSelectionModel() != selection_model; | 1443 cursor_changed |= GetSelectionModel() != selection_model; |
| 1419 if (cursor_changed) | 1444 if (cursor_changed) |
| 1420 UpdateSelectionClipboard(); | 1445 UpdateSelectionClipboard(); |
| 1421 UpdateAfterChange(text_changed, cursor_changed); | 1446 UpdateAfterChange(text_changed, cursor_changed); |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1929 RequestFocus(); | 1954 RequestFocus(); |
| 1930 model_->MoveCursorTo(mouse); | 1955 model_->MoveCursorTo(mouse); |
| 1931 if (!selection_clipboard_text.empty()) { | 1956 if (!selection_clipboard_text.empty()) { |
| 1932 model_->InsertText(selection_clipboard_text); | 1957 model_->InsertText(selection_clipboard_text); |
| 1933 UpdateAfterChange(true, true); | 1958 UpdateAfterChange(true, true); |
| 1934 } | 1959 } |
| 1935 OnAfterUserAction(); | 1960 OnAfterUserAction(); |
| 1936 } | 1961 } |
| 1937 | 1962 |
| 1938 } // namespace views | 1963 } // namespace views |
| OLD | NEW |