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

Unified Diff: chrome/browser/autocomplete/autocomplete_edit.cc

Issue 6281011: Allow space to accept keyword even when inline autocomplete is available. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Accept keyword even with selection. Created 9 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: chrome/browser/autocomplete/autocomplete_edit.cc
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc
index ff2d5d3c6a18c62addbf1b20151cf5ecbf4c581b..2264f0b7f230f858797eaa3b3975d3e5390f5916 100644
--- a/chrome/browser/autocomplete/autocomplete_edit.cc
+++ b/chrome/browser/autocomplete/autocomplete_edit.cc
@@ -629,9 +629,11 @@ bool AutocompleteEditModel::OnAfterPossibleChange(
else if (text_differs)
paste_state_ = NONE;
+ const bool had_inline_autocomplete = !inline_autocomplete_text_.empty();
Peter Kasting 2011/01/25 02:12:22 Nit: You can roll this back into the statement bel
James Su 2011/01/25 02:52:48 Done.
+
// Modifying the selection counts as accepting the autocompleted text.
const bool user_text_changed =
- text_differs || (selection_differs && !inline_autocomplete_text_.empty());
+ text_differs || (selection_differs && had_inline_autocomplete);
// If something has changed while the control key is down, prevent
// "ctrl-enter" until the control key is released. When we do this, we need
@@ -645,20 +647,12 @@ bool AutocompleteEditModel::OnAfterPossibleChange(
return false;
}
+ const std::wstring old_user_text = user_text_;
// If the user text has not changed, we do not want to change the model's
// state associated with the text. Otherwise, we can get surprising behavior
// where the autocompleted text unexpectedly reappears, e.g. crbug.com/55983
if (user_text_changed) {
- const std::wstring new_user_text = UserTextFromDisplayText(new_text);
-
- // Try to accept the current keyword if the user only typed a space at the
- // end of content. Model's state and popup will be updated when the keyword
- // is accepted. So we just need to return false here.
- if (allow_keyword_ui_change && !selection_differs &&
- MaybeAcceptKeywordBySpace(new_user_text))
- return false;
-
- InternalSetUserText(new_user_text);
+ InternalSetUserText(UserTextFromDisplayText(new_text));
has_temporary_text_ = false;
// Track when the user has deleted text so we won't allow inline
@@ -667,6 +661,14 @@ bool AutocompleteEditModel::OnAfterPossibleChange(
}
view_->UpdatePopup();
+
+ // Try to accept the current keyword if the user only typed a space at the
Peter Kasting 2011/01/25 02:12:22 Nit: This comment might now be more accurate as:
James Su 2011/01/25 02:52:48 Done.
+ // end of content. Model's state and popup will be updated when the keyword
+ // is accepted. So we just need to return false here.
+ if (text_differs && allow_keyword_ui_change && !just_deleted_text &&
Peter Kasting 2011/01/25 02:12:22 Nit: Even more condensed: return !text_differs
James Su 2011/01/25 02:52:48 I'd prefer to keep the old one, which is more read
Peter Kasting 2011/01/25 04:25:48 Then how about this: return !(text_differs && a
+ MaybeAcceptKeywordBySpace(old_user_text, user_text_))
+ return false;
+
return true;
}
@@ -782,13 +784,16 @@ bool AutocompleteEditModel::GetURLForText(const std::wstring& text,
}
bool AutocompleteEditModel::MaybeAcceptKeywordBySpace(
+ const std::wstring& old_user_text,
const std::wstring& new_user_text) {
return (paste_state_ == NONE) && is_keyword_hint_ && !keyword_.empty() &&
- inline_autocomplete_text_.empty() && !user_text_.empty() &&
- (new_user_text.length() == user_text_.length() + 1) &&
- !new_user_text.compare(0, user_text_.length(), user_text_) &&
- IsSpaceCharForAcceptingKeyword(new_user_text[user_text_.length()]) &&
- !IsWhitespace(user_text_[user_text_.length() - 1]) &&
+ inline_autocomplete_text_.empty() &&
+ !old_user_text.empty() && new_user_text.length() >= 2 &&
Peter Kasting 2011/01/25 02:12:22 Nit: "!old_user_text.empty()" is unnecessary given
James Su 2011/01/25 02:52:48 Done.
+ (old_user_text.length() + 1 >= new_user_text.length()) &&
+ !new_user_text.compare(0, new_user_text.length() - 1, old_user_text,
+ 0, new_user_text.length() - 1) &&
+ IsSpaceCharForAcceptingKeyword(new_user_text[new_user_text.length() - 1]) &&
Peter Kasting 2011/01/25 02:12:22 Nit: 80 columns. Also, I think it'll be a littler
James Su 2011/01/25 02:52:48 Done.
+ !IsWhitespace(new_user_text[new_user_text.length() - 2]) &&
AcceptKeyword();
}

Powered by Google App Engine
This is Rietveld 408576698