Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(776)

Unified Diff: ui/views/controls/textfield/textfield_views_model.cc

Issue 135813002: Revert of Merge NativeTextfieldViews into views::Textfield. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/views/controls/textfield/textfield_views_model.cc
diff --git a/ui/views/controls/textfield/textfield_views_model.cc b/ui/views/controls/textfield/textfield_views_model.cc
index 355fa1ccf48ae54f67d12629f13afd416d2693e3..6179e8fda3d8c7362f9387c7ea292022a914c7de 100644
--- a/ui/views/controls/textfield/textfield_views_model.cc
+++ b/ui/views/controls/textfield/textfield_views_model.cc
@@ -306,18 +306,22 @@
ClearComposition();
}
-bool TextfieldViewsModel::SetText(const base::string16& new_text) {
+const base::string16& TextfieldViewsModel::GetText() const {
+ return render_text_->text();
+}
+
+bool TextfieldViewsModel::SetText(const base::string16& text) {
bool changed = false;
if (HasCompositionText()) {
ConfirmCompositionText();
changed = true;
}
- if (text() != new_text) {
+ if (GetText() != text) {
if (changed) // No need to remember composition.
Undo();
size_t old_cursor = GetCursorPosition();
// SetText moves the cursor to the end.
- size_t new_cursor = new_text.length();
+ size_t new_cursor = text.length();
SelectAll(false);
// If there is a composition text, don't merge with previous edit.
// Otherwise, force merge the edits.
@@ -325,7 +329,7 @@
changed ? DO_NOT_MERGE : MERGE_WITH_PREVIOUS,
old_cursor,
new_cursor,
- new_text,
+ text,
0U);
render_text_->SetCursorPosition(new_cursor);
}
@@ -333,14 +337,14 @@
return changed;
}
-void TextfieldViewsModel::Append(const base::string16& new_text) {
+void TextfieldViewsModel::Append(const base::string16& text) {
if (HasCompositionText())
ConfirmCompositionText();
size_t save = GetCursorPosition();
MoveCursor(gfx::LINE_BREAK,
render_text_->GetVisualDirectionOfLogicalEnd(),
false);
- InsertText(new_text);
+ InsertText(text);
render_text_->SetCursorPosition(save);
ClearSelection();
}
@@ -355,7 +359,7 @@
DeleteSelection();
return true;
}
- if (text().length() > GetCursorPosition()) {
+ if (GetText().length() > GetCursorPosition()) {
size_t cursor_position = GetCursorPosition();
size_t next_grapheme_index = render_text_->IndexOfAdjacentGrapheme(
cursor_position, gfx::CURSOR_FORWARD);
@@ -379,7 +383,8 @@
size_t cursor_position = GetCursorPosition();
if (cursor_position > 0) {
// Delete one code point, which may be two UTF-16 words.
- size_t previous_char = gfx::UTF16OffsetToIndex(text(), cursor_position, -1);
+ size_t previous_char =
+ gfx::UTF16OffsetToIndex(GetText(), cursor_position, -1);
ExecuteAndRecordDelete(gfx::Range(cursor_position, previous_char), true);
return true;
}
@@ -419,8 +424,8 @@
}
base::string16 TextfieldViewsModel::GetSelectedText() const {
- return text().substr(render_text_->selection().GetMin(),
- render_text_->selection().length());
+ return GetText().substr(render_text_->selection().GetMin(),
+ render_text_->selection().length());
}
void TextfieldViewsModel::SelectRange(const gfx::Range& range) {
@@ -474,7 +479,7 @@
if (HasCompositionText()) // safe guard for release build.
CancelCompositionText();
- base::string16 old = text();
+ base::string16 old = GetText();
size_t old_cursor = GetCursorPosition();
(*current_edit_)->Commit();
(*current_edit_)->Undo(this);
@@ -483,7 +488,7 @@
current_edit_ = edit_history_.end();
else
current_edit_--;
- return old != text() || old_cursor != GetCursorPosition();
+ return old != GetText() || old_cursor != GetCursorPosition();
}
bool TextfieldViewsModel::Redo() {
@@ -497,10 +502,10 @@
current_edit_ = edit_history_.begin();
else
current_edit_ ++;
- base::string16 old = text();
+ base::string16 old = GetText();
size_t old_cursor = GetCursorPosition();
(*current_edit_)->Redo(this);
- return old != text() || old_cursor != GetCursorPosition();
+ return old != GetText() || old_cursor != GetCursorPosition();
}
bool TextfieldViewsModel::Cut() {
@@ -553,26 +558,25 @@
}
void TextfieldViewsModel::DeleteSelectionAndInsertTextAt(
- const base::string16& new_text,
- size_t position) {
+ const base::string16& text, size_t position) {
if (HasCompositionText())
CancelCompositionText();
ExecuteAndRecordReplace(DO_NOT_MERGE,
GetCursorPosition(),
- position + new_text.length(),
- new_text,
+ position + text.length(),
+ text,
position);
}
base::string16 TextfieldViewsModel::GetTextFromRange(
const gfx::Range& range) const {
- if (range.IsValid() && range.GetMin() < text().length())
- return text().substr(range.GetMin(), range.length());
+ if (range.IsValid() && range.GetMin() < GetText().length())
+ return GetText().substr(range.GetMin(), range.length());
return base::string16();
}
void TextfieldViewsModel::GetTextRange(gfx::Range* range) const {
- *range = gfx::Range(0, text().length());
+ *range = gfx::Range(0, GetText().length());
}
void TextfieldViewsModel::SetCompositionText(
@@ -586,7 +590,7 @@
return;
size_t cursor = GetCursorPosition();
- base::string16 new_text = text();
+ base::string16 new_text = GetText();
render_text_->SetText(new_text.insert(cursor, composition.text));
gfx::Range range(cursor, cursor + composition.text.length());
render_text_->SetCompositionRange(range);
@@ -615,10 +619,10 @@
void TextfieldViewsModel::ConfirmCompositionText() {
DCHECK(HasCompositionText());
gfx::Range range = render_text_->GetCompositionRange();
- base::string16 composition = text().substr(range.start(), range.length());
+ base::string16 text = GetText().substr(range.start(), range.length());
// TODO(oshima): current behavior on ChromeOS is a bit weird and not
// sure exactly how this should work. Find out and fix if necessary.
- AddOrMergeEditHistory(new InsertEdit(false, composition, range.start()));
+ AddOrMergeEditHistory(new InsertEdit(false, text, range.start()));
render_text_->SetCursorPosition(range.end());
ClearComposition();
if (delegate_)
@@ -629,7 +633,7 @@
DCHECK(HasCompositionText());
gfx::Range range = render_text_->GetCompositionRange();
ClearComposition();
- base::string16 new_text = text();
+ base::string16 new_text = GetText();
render_text_->SetText(new_text.erase(range.start(), range.length()));
render_text_->SetCursorPosition(range.start());
if (delegate_)
@@ -648,28 +652,23 @@
return !render_text_->GetCompositionRange().is_empty();
}
-void TextfieldViewsModel::ClearEditHistory() {
- STLDeleteElements(&edit_history_);
- current_edit_ = edit_history_.end();
-}
-
/////////////////////////////////////////////////////////////////
// TextfieldViewsModel: private
-void TextfieldViewsModel::InsertTextInternal(const base::string16& new_text,
+void TextfieldViewsModel::InsertTextInternal(const base::string16& text,
bool mergeable) {
if (HasCompositionText()) {
CancelCompositionText();
- ExecuteAndRecordInsert(new_text, mergeable);
+ ExecuteAndRecordInsert(text, mergeable);
} else if (HasSelection()) {
ExecuteAndRecordReplaceSelection(mergeable ? MERGEABLE : DO_NOT_MERGE,
- new_text);
+ text);
} else {
- ExecuteAndRecordInsert(new_text, mergeable);
- }
-}
-
-void TextfieldViewsModel::ReplaceTextInternal(const base::string16& new_text,
+ ExecuteAndRecordInsert(text, mergeable);
+ }
+}
+
+void TextfieldViewsModel::ReplaceTextInternal(const base::string16& text,
bool mergeable) {
if (HasCompositionText()) {
CancelCompositionText();
@@ -677,7 +676,7 @@
size_t cursor = GetCursorPosition();
const gfx::SelectionModel& model = render_text_->selection_model();
// When there is no selection, the default is to replace the next grapheme
- // with |new_text|. So, need to find the index of next grapheme first.
+ // with |text|. So, need to find the index of next grapheme first.
size_t next =
render_text_->IndexOfAdjacentGrapheme(cursor, gfx::CURSOR_FORWARD);
if (next == model.caret_pos())
@@ -686,7 +685,12 @@
render_text_->SelectRange(gfx::Range(next, model.caret_pos()));
}
// Edit history is recorded in InsertText.
- InsertTextInternal(new_text, mergeable);
+ InsertTextInternal(text, mergeable);
+}
+
+void TextfieldViewsModel::ClearEditHistory() {
+ STLDeleteElements(&edit_history_);
+ current_edit_ = edit_history_.end();
}
void TextfieldViewsModel::ClearRedoHistory() {
@@ -705,9 +709,9 @@
void TextfieldViewsModel::ExecuteAndRecordDelete(gfx::Range range,
bool mergeable) {
size_t old_text_start = range.GetMin();
- const base::string16 old_text = text().substr(old_text_start, range.length());
+ const base::string16 text = GetText().substr(old_text_start, range.length());
bool backward = range.is_reversed();
- Edit* edit = new DeleteEdit(mergeable, old_text, old_text_start, backward);
+ Edit* edit = new DeleteEdit(mergeable, text, old_text_start, backward);
bool delete_edit = AddOrMergeEditHistory(edit);
edit->Redo(this);
if (delete_edit)
@@ -715,8 +719,7 @@
}
void TextfieldViewsModel::ExecuteAndRecordReplaceSelection(
- MergeType merge_type,
- const base::string16& new_text) {
+ MergeType merge_type, const base::string16& new_text) {
size_t new_text_start = render_text_->selection().GetMin();
size_t new_cursor_pos = new_text_start + new_text.length();
ExecuteAndRecordReplace(merge_type,
@@ -748,9 +751,9 @@
delete edit;
}
-void TextfieldViewsModel::ExecuteAndRecordInsert(const base::string16& new_text,
+void TextfieldViewsModel::ExecuteAndRecordInsert(const base::string16& text,
bool mergeable) {
- Edit* edit = new InsertEdit(mergeable, new_text, GetCursorPosition());
+ Edit* edit = new InsertEdit(mergeable, text, GetCursorPosition());
bool delete_edit = AddOrMergeEditHistory(edit);
edit->Redo(this);
if (delete_edit)
@@ -784,12 +787,12 @@
size_t new_text_insert_at,
size_t new_cursor_pos) {
DCHECK_LE(delete_from, delete_to);
- base::string16 old_text = text();
+ base::string16 text = GetText();
ClearComposition();
if (delete_from != delete_to)
- render_text_->SetText(old_text.erase(delete_from, delete_to - delete_from));
+ render_text_->SetText(text.erase(delete_from, delete_to - delete_from));
if (!new_text.empty())
- render_text_->SetText(old_text.insert(new_text_insert_at, new_text));
+ render_text_->SetText(text.insert(new_text_insert_at, new_text));
render_text_->SetCursorPosition(new_cursor_pos);
// TODO(oshima): mac selects the text that is just undone (but gtk doesn't).
// This looks fine feature and we may want to do the same.
« no previous file with comments | « ui/views/controls/textfield/textfield_views_model.h ('k') | ui/views/controls/textfield/textfield_views_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698