| Index: ui/views/controls/textfield/textfield.cc
|
| diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc
|
| index b31dd2d0737218a3d623dd54b9eb3ba9f2be0594..2c7bc280f13cfdcdafbb13bded79e37519f40c0a 100644
|
| --- a/ui/views/controls/textfield/textfield.cc
|
| +++ b/ui/views/controls/textfield/textfield.cc
|
| @@ -1261,8 +1261,12 @@ bool Textfield::IsCommandIdEnabled(int command_id) const {
|
| case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
|
| case IDS_MOVE_TO_BEGINNING_OF_LINE:
|
| case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
|
| + case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_EXTEND_SELECTION:
|
| + case IDS_MOVE_TOWARDS_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
|
| case IDS_MOVE_TO_END_OF_LINE:
|
| case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
|
| + case IDS_MOVE_TO_END_OF_LINE_AND_EXTEND_SELECTION:
|
| + case IDS_MOVE_TOWARDS_END_OF_LINE_AND_MODIFY_SELECTION:
|
| return true;
|
| default:
|
| return false;
|
| @@ -1325,6 +1329,12 @@ void Textfield::ExecuteCommand(int command_id, int event_flags) {
|
| gfx::VisualCursorDirection end = rtl ? gfx::CURSOR_LEFT : gfx::CURSOR_RIGHT;
|
| gfx::SelectionModel selection_model = GetSelectionModel();
|
|
|
| +#if defined(OS_MACOSX)
|
| + gfx::SelectionReversedBehavior word_selection = gfx::SELECTION_CARET;
|
| +#else
|
| + gfx::SelectionReversedBehavior word_selection = gfx::SELECTION_START_NEW;
|
| +#endif
|
| +
|
| OnBeforeUserAction();
|
| switch (command_id) {
|
| case IDS_APP_UNDO:
|
| @@ -1386,25 +1396,40 @@ void Textfield::ExecuteCommand(int command_id, int event_flags) {
|
| model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false);
|
| break;
|
| case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
|
| - model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true);
|
| + model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true,
|
| + word_selection);
|
| break;
|
| case IDS_MOVE_WORD_RIGHT:
|
| model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false);
|
| break;
|
| case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
|
| - model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true);
|
| + model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true,
|
| + word_selection);
|
| break;
|
| case IDS_MOVE_TO_BEGINNING_OF_LINE:
|
| model_->MoveCursor(gfx::LINE_BREAK, begin, false);
|
| break;
|
| case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
|
| - model_->MoveCursor(gfx::LINE_BREAK, begin, true);
|
| + model_->MoveCursor(gfx::LINE_BREAK, begin, true,
|
| + gfx::SELECTION_START_NEW);
|
| + break;
|
| + case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_EXTEND_SELECTION:
|
| + model_->MoveCursor(gfx::LINE_BREAK, begin, true, gfx::SELECTION_EXTEND);
|
| + break;
|
| + case IDS_MOVE_TOWARDS_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
|
| + model_->MoveCursor(gfx::LINE_BREAK, begin, true, gfx::SELECTION_CARET);
|
| break;
|
| case IDS_MOVE_TO_END_OF_LINE:
|
| model_->MoveCursor(gfx::LINE_BREAK, end, false);
|
| break;
|
| case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
|
| - model_->MoveCursor(gfx::LINE_BREAK, end, true);
|
| + model_->MoveCursor(gfx::LINE_BREAK, end, true, gfx::SELECTION_START_NEW);
|
| + break;
|
| + case IDS_MOVE_TO_END_OF_LINE_AND_EXTEND_SELECTION:
|
| + model_->MoveCursor(gfx::LINE_BREAK, end, true, gfx::SELECTION_EXTEND);
|
| + break;
|
| + case IDS_MOVE_TOWARDS_END_OF_LINE_AND_MODIFY_SELECTION:
|
| + model_->MoveCursor(gfx::LINE_BREAK, end, true, gfx::SELECTION_CARET);
|
| break;
|
| default:
|
| NOTREACHED();
|
|
|