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 |