Chromium Code Reviews| Index: ui/views/controls/textfield/textfield.cc |
| diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc |
| index 55f712a9abc259980c6a5f136bf543c15eb82e3b..9999749323e119707ca2a2de1f2e2d5b227fb9ed 100644 |
| --- a/ui/views/controls/textfield/textfield.cc |
| +++ b/ui/views/controls/textfield/textfield.cc |
| @@ -167,104 +167,6 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::KeyEvent& event) { |
| } |
| } |
| -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| -// Convert a custom text edit |command| to the equivalent views command ID. |
| -ui::TextEditCommand GetViewsCommand(const ui::TextEditCommandAuraLinux& command, |
| - bool rtl) { |
| - const bool select = command.extend_selection(); |
| - switch (command.command_id()) { |
| - case ui::TextEditCommandAuraLinux::COPY: |
| - return ui::TextEditCommand::COPY; |
| - case ui::TextEditCommandAuraLinux::CUT: |
| - return ui::TextEditCommand::CUT; |
| - case ui::TextEditCommandAuraLinux::DELETE_BACKWARD: |
| - return ui::TextEditCommand::DELETE_BACKWARD; |
| - case ui::TextEditCommandAuraLinux::DELETE_FORWARD: |
| - return ui::TextEditCommand::DELETE_FORWARD; |
| - case ui::TextEditCommandAuraLinux::DELETE_TO_BEGINNING_OF_LINE: |
| - case ui::TextEditCommandAuraLinux::DELETE_TO_BEGINNING_OF_PARAGRAPH: |
| - return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE; |
| - case ui::TextEditCommandAuraLinux::DELETE_TO_END_OF_LINE: |
| - case ui::TextEditCommandAuraLinux::DELETE_TO_END_OF_PARAGRAPH: |
| - return ui::TextEditCommand::DELETE_TO_END_OF_LINE; |
| - case ui::TextEditCommandAuraLinux::DELETE_WORD_BACKWARD: |
| - return ui::TextEditCommand::DELETE_WORD_BACKWARD; |
| - case ui::TextEditCommandAuraLinux::DELETE_WORD_FORWARD: |
| - return ui::TextEditCommand::DELETE_WORD_FORWARD; |
| - case ui::TextEditCommandAuraLinux::INSERT_TEXT: |
| - return ui::TextEditCommand::INVALID_COMMAND; |
| - case ui::TextEditCommandAuraLinux::MOVE_BACKWARD: |
| - if (rtl) |
| - return select ? ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_RIGHT; |
| - return select ? ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_LEFT; |
| - case ui::TextEditCommandAuraLinux::MOVE_DOWN: |
| - return ui::TextEditCommand::MOVE_DOWN; |
| - case ui::TextEditCommandAuraLinux::MOVE_FORWARD: |
| - if (rtl) |
| - return select ? ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_LEFT; |
| - return select ? ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_RIGHT; |
| - case ui::TextEditCommandAuraLinux::MOVE_LEFT: |
| - return select ? ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_LEFT; |
| - case ui::TextEditCommandAuraLinux::MOVE_PAGE_DOWN: |
| - case ui::TextEditCommandAuraLinux::MOVE_PAGE_UP: |
| - return ui::TextEditCommand::INVALID_COMMAND; |
| - case ui::TextEditCommandAuraLinux::MOVE_RIGHT: |
| - return select ? ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_RIGHT; |
| - case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINNING_OF_DOCUMENT: |
| - case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINNING_OF_LINE: |
| - case ui::TextEditCommandAuraLinux::MOVE_TO_BEGINNING_OF_PARAGRAPH: |
| - return select ? ui::TextEditCommand:: |
| - MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE; |
| - case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_DOCUMENT: |
| - case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_LINE: |
| - case ui::TextEditCommandAuraLinux::MOVE_TO_END_OF_PARAGRAPH: |
| - return select |
| - ? ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_TO_END_OF_LINE; |
| - case ui::TextEditCommandAuraLinux::MOVE_UP: |
| - return ui::TextEditCommand::MOVE_UP; |
| - case ui::TextEditCommandAuraLinux::MOVE_WORD_BACKWARD: |
| - if (rtl) { |
| - return select |
| - ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_WORD_RIGHT; |
| - } |
| - return select ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_WORD_LEFT; |
| - case ui::TextEditCommandAuraLinux::MOVE_WORD_FORWARD: |
| - if (rtl) { |
| - return select ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_WORD_LEFT; |
| - } |
| - return select ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_WORD_RIGHT; |
| - case ui::TextEditCommandAuraLinux::MOVE_WORD_LEFT: |
| - return select ? ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_WORD_LEFT; |
| - case ui::TextEditCommandAuraLinux::MOVE_WORD_RIGHT: |
| - return select ? ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION |
| - : ui::TextEditCommand::MOVE_WORD_RIGHT; |
| - case ui::TextEditCommandAuraLinux::PASTE: |
| - return ui::TextEditCommand::PASTE; |
| - case ui::TextEditCommandAuraLinux::SELECT_ALL: |
| - return ui::TextEditCommand::SELECT_ALL; |
| - case ui::TextEditCommandAuraLinux::SET_MARK: |
| - case ui::TextEditCommandAuraLinux::UNSELECT: |
| - case ui::TextEditCommandAuraLinux::INVALID_COMMAND: |
| - return ui::TextEditCommand::INVALID_COMMAND; |
| - } |
| - NOTREACHED(); |
| - return ui::TextEditCommand::INVALID_COMMAND; |
| -} |
| -#endif |
| - |
| const gfx::FontList& GetDefaultFontList() { |
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| return rb.GetFontListWithDelta(ui::kLabelFontSizeDelta); |
| @@ -757,9 +659,8 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event) { |
| ui::GetTextEditKeyBindingsDelegate(); |
| std::vector<ui::TextEditCommandAuraLinux> commands; |
| if (!handled && delegate && delegate->MatchEvent(event, &commands)) { |
| - const bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT; |
| for (size_t i = 0; i < commands.size(); ++i) { |
| - const ui::TextEditCommand command = GetViewsCommand(commands[i], rtl); |
| + const ui::TextEditCommand command = commands[i].command(); |
|
msw
2016/06/10 01:33:23
optional nit: inline this.
karandeepb
2016/06/15 08:13:34
Done.
|
| if (IsEditCommandEnabled(command)) { |
| ExecuteEditCommand(command); |
| handled = true; |
| @@ -896,9 +797,8 @@ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) { |
| ui::GetTextEditKeyBindingsDelegate(); |
| std::vector<ui::TextEditCommandAuraLinux> commands; |
| if (delegate && delegate->MatchEvent(event, &commands)) { |
| - const bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT; |
| for (size_t i = 0; i < commands.size(); ++i) |
| - if (IsEditCommandEnabled(GetViewsCommand(commands[i], rtl))) |
| + if (IsEditCommandEnabled(commands[i].command())) |
| return true; |
| } |
| #endif |
| @@ -1554,6 +1454,8 @@ bool Textfield::IsEditCommandEnabled(ui::TextEditCommand command) const { |
| case ui::TextEditCommand::DELETE_TO_END_OF_LINE: |
| case ui::TextEditCommand::DELETE_WORD_BACKWARD: |
| case ui::TextEditCommand::DELETE_WORD_FORWARD: |
| + case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH: |
| + case ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH: |
| return editable; |
| case ui::TextEditCommand::MOVE_LEFT: |
| case ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION: |
| @@ -1567,9 +1469,36 @@ bool Textfield::IsEditCommandEnabled(ui::TextEditCommand command) const { |
| case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: |
| case ui::TextEditCommand::MOVE_TO_END_OF_LINE: |
| case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_FORWARD: |
| + case ui::TextEditCommand::MOVE_BACKWARD: |
| + case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_DOCUMENT: |
| + case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_PARAGRAPH: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH: |
| + case ui::TextEditCommand::MOVE_WORD_BACKWARD: |
| + case ui::TextEditCommand::MOVE_WORD_FORWARD: |
| + case ui::TextEditCommand::MOVE_BACKWARD_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_FORWARD_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand:: |
| + MOVE_TO_BEGINNING_OF_DOCUMENT_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand:: |
| + MOVE_TO_BEGINNING_OF_PARAGRAPH_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_WORD_BACKWARD_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_WORD_FORWARD_AND_MODIFY_SELECTION: |
| return true; |
| case ui::TextEditCommand::MOVE_UP: |
| case ui::TextEditCommand::MOVE_DOWN: |
| + case ui::TextEditCommand::MOVE_UP_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_DOWN_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::INSERT_TEXT: |
| + case ui::TextEditCommand::MOVE_PAGE_DOWN: |
| + case ui::TextEditCommand::MOVE_PAGE_UP: |
| + case ui::TextEditCommand::MOVE_PAGE_DOWN_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_PAGE_UP_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::SET_MARK: |
| + case ui::TextEditCommand::UNSELECT: |
| return false; |
| } |
| NOTREACHED(); |
| @@ -1617,10 +1546,10 @@ void Textfield::ExecuteEditCommand(ui::TextEditCommand command) { |
| switch (command) { |
| case ui::TextEditCommand::DELETE_WORD_BACKWARD: |
|
msw
2016/06/10 01:33:23
nit: reorder these to something a bit neater.
karandeepb
2016/06/15 08:13:34
Done.
|
| case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE: |
| - command = ui::TextEditCommand::DELETE_BACKWARD; |
| - break; |
| case ui::TextEditCommand::DELETE_WORD_FORWARD: |
| case ui::TextEditCommand::DELETE_TO_END_OF_LINE: |
| + case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH: |
| + case ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH: |
| command = ui::TextEditCommand::DELETE_FORWARD; |
| break; |
| default: |
| @@ -1667,10 +1596,12 @@ void Textfield::ExecuteEditCommand(ui::TextEditCommand command) { |
| text_changed = cursor_changed = model_->Delete(); |
| break; |
| case ui::TextEditCommand::DELETE_TO_END_OF_LINE: |
| + case ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH: |
| model_->MoveCursor(gfx::LINE_BREAK, end, true); |
| text_changed = cursor_changed = model_->Delete(); |
| break; |
| case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE: |
| + case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH: |
| model_->MoveCursor(gfx::LINE_BREAK, begin, true); |
| text_changed = cursor_changed = model_->Backspace(); |
| break; |
| @@ -1707,19 +1638,64 @@ void Textfield::ExecuteEditCommand(ui::TextEditCommand command) { |
| model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true); |
| break; |
| case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE: |
| + case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_DOCUMENT: |
| + case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_PARAGRAPH: |
| model_->MoveCursor(gfx::LINE_BREAK, begin, false); |
| break; |
| case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand:: |
| + MOVE_TO_BEGINNING_OF_DOCUMENT_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand:: |
| + MOVE_TO_BEGINNING_OF_PARAGRAPH_AND_MODIFY_SELECTION: |
| model_->MoveCursor(gfx::LINE_BREAK, begin, true); |
| break; |
| case ui::TextEditCommand::MOVE_TO_END_OF_LINE: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH: |
| model_->MoveCursor(gfx::LINE_BREAK, end, false); |
| break; |
| case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH_AND_MODIFY_SELECTION: |
| model_->MoveCursor(gfx::LINE_BREAK, end, true); |
| break; |
| + |
| + case ui::TextEditCommand::MOVE_BACKWARD: |
| + model_->MoveCursor(gfx::CHARACTER_BREAK, begin, false); |
| + break; |
| + case ui::TextEditCommand::MOVE_FORWARD: |
| + model_->MoveCursor(gfx::CHARACTER_BREAK, end, false); |
| + break; |
| + case ui::TextEditCommand::MOVE_WORD_BACKWARD: |
| + model_->MoveCursor(gfx::WORD_BREAK, begin, false); |
| + break; |
| + case ui::TextEditCommand::MOVE_WORD_FORWARD: |
| + model_->MoveCursor(gfx::WORD_BREAK, end, false); |
| + break; |
| + case ui::TextEditCommand::MOVE_BACKWARD_AND_MODIFY_SELECTION: |
|
msw
2016/06/10 01:33:23
ditto nit: keep pairing ordering or follow some ot
karandeepb
2016/06/15 08:13:34
Done.
|
| + model_->MoveCursor(gfx::CHARACTER_BREAK, begin, true); |
| + break; |
| + case ui::TextEditCommand::MOVE_FORWARD_AND_MODIFY_SELECTION: |
| + model_->MoveCursor(gfx::CHARACTER_BREAK, end, true); |
| + break; |
| + case ui::TextEditCommand::MOVE_WORD_BACKWARD_AND_MODIFY_SELECTION: |
| + model_->MoveCursor(gfx::WORD_BREAK, begin, true); |
| + break; |
| + case ui::TextEditCommand::MOVE_WORD_FORWARD_AND_MODIFY_SELECTION: |
| + model_->MoveCursor(gfx::WORD_BREAK, end, true); |
| + break; |
| + |
| case ui::TextEditCommand::MOVE_UP: |
| case ui::TextEditCommand::MOVE_DOWN: |
| + case ui::TextEditCommand::MOVE_UP_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_DOWN_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::INSERT_TEXT: |
| + case ui::TextEditCommand::MOVE_PAGE_DOWN: |
| + case ui::TextEditCommand::MOVE_PAGE_UP: |
| + case ui::TextEditCommand::MOVE_PAGE_DOWN_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::MOVE_PAGE_UP_AND_MODIFY_SELECTION: |
| + case ui::TextEditCommand::SET_MARK: |
| + case ui::TextEditCommand::UNSELECT: |
| case ui::TextEditCommand::INVALID_COMMAND: |
| NOTREACHED(); |
| break; |