| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "views/controls/textfield/textfield_views_model.h" | 5 #include "views/controls/textfield/textfield_views_model.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/i18n/break_iterator.h" | 9 #include "base/i18n/break_iterator.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 AddOrMergeEditHistory(new InsertEdit(false, text, range.start())); | 599 AddOrMergeEditHistory(new InsertEdit(false, text, range.start())); |
| 600 render_text_->SetCursorPosition(range.end()); | 600 render_text_->SetCursorPosition(range.end()); |
| 601 ClearComposition(); | 601 ClearComposition(); |
| 602 if (delegate_) | 602 if (delegate_) |
| 603 delegate_->OnCompositionTextConfirmedOrCleared(); | 603 delegate_->OnCompositionTextConfirmedOrCleared(); |
| 604 } | 604 } |
| 605 | 605 |
| 606 void TextfieldViewsModel::CancelCompositionText() { | 606 void TextfieldViewsModel::CancelCompositionText() { |
| 607 DCHECK(HasCompositionText()); | 607 DCHECK(HasCompositionText()); |
| 608 ui::Range range = render_text_->GetCompositionRange(); | 608 ui::Range range = render_text_->GetCompositionRange(); |
| 609 ClearComposition(); |
| 609 string16 new_text = GetText(); | 610 string16 new_text = GetText(); |
| 610 render_text_->SetText(new_text.erase(range.start(), range.length())); | 611 render_text_->SetText(new_text.erase(range.start(), range.length())); |
| 611 render_text_->SetCursorPosition(range.start()); | 612 render_text_->SetCursorPosition(range.start()); |
| 612 ClearComposition(); | |
| 613 if (delegate_) | 613 if (delegate_) |
| 614 delegate_->OnCompositionTextConfirmedOrCleared(); | 614 delegate_->OnCompositionTextConfirmedOrCleared(); |
| 615 } | 615 } |
| 616 | 616 |
| 617 void TextfieldViewsModel::ClearComposition() { | 617 void TextfieldViewsModel::ClearComposition() { |
| 618 render_text_->SetCompositionRange(ui::Range::InvalidRange()); | 618 render_text_->SetCompositionRange(ui::Range::InvalidRange()); |
| 619 } | 619 } |
| 620 | 620 |
| 621 void TextfieldViewsModel::GetCompositionTextRange(ui::Range* range) const { | 621 void TextfieldViewsModel::GetCompositionTextRange(ui::Range* range) const { |
| 622 *range = ui::Range(render_text_->GetCompositionRange()); | 622 *range = ui::Range(render_text_->GetCompositionRange()); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 760 return false; | 760 return false; |
| 761 } | 761 } |
| 762 | 762 |
| 763 void TextfieldViewsModel::ModifyText(size_t delete_from, | 763 void TextfieldViewsModel::ModifyText(size_t delete_from, |
| 764 size_t delete_to, | 764 size_t delete_to, |
| 765 const string16& new_text, | 765 const string16& new_text, |
| 766 size_t new_text_insert_at, | 766 size_t new_text_insert_at, |
| 767 size_t new_cursor_pos) { | 767 size_t new_cursor_pos) { |
| 768 DCHECK_LE(delete_from, delete_to); | 768 DCHECK_LE(delete_from, delete_to); |
| 769 string16 text = GetText(); | 769 string16 text = GetText(); |
| 770 ClearComposition(); |
| 770 if (delete_from != delete_to) | 771 if (delete_from != delete_to) |
| 771 render_text_->SetText(text.erase(delete_from, delete_to - delete_from)); | 772 render_text_->SetText(text.erase(delete_from, delete_to - delete_from)); |
| 772 if (!new_text.empty()) | 773 if (!new_text.empty()) |
| 773 render_text_->SetText(text.insert(new_text_insert_at, new_text)); | 774 render_text_->SetText(text.insert(new_text_insert_at, new_text)); |
| 774 render_text_->SetCursorPosition(new_cursor_pos); | 775 render_text_->SetCursorPosition(new_cursor_pos); |
| 775 // TODO(oshima): mac selects the text that is just undone (but gtk doesn't). | 776 // TODO(oshima): mac selects the text that is just undone (but gtk doesn't). |
| 776 // This looks fine feature and we may want to do the same. | 777 // This looks fine feature and we may want to do the same. |
| 777 } | 778 } |
| 778 | 779 |
| 779 } // namespace views | 780 } // namespace views |
| OLD | NEW |