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

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

Issue 6731036: Enabled pressing TAB to cycle through the Omnibox results. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 9 years, 1 month 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
===================================================================
--- chrome/browser/autocomplete/autocomplete_edit.cc (revision 108642)
+++ chrome/browser/autocomplete/autocomplete_edit.cc (working copy)
@@ -397,6 +397,8 @@
void AutocompleteEditModel::StartAutocomplete(
bool has_selected_text,
bool prevent_inline_autocomplete) const {
+ ClearPopupKeywordMode();
+
bool keyword_is_selected = KeywordIsSelected();
popup_->SetHoveredLine(AutocompletePopupModel::kNoMatch);
// We don't explicitly clear AutocompletePopupModel::manually_selected_match,
@@ -584,28 +586,46 @@
bool AutocompleteEditModel::AcceptKeyword() {
DCHECK(is_keyword_hint_ && !keyword_.empty());
- view_->OnBeforePossibleChange();
- view_->SetWindowTextAndCaretPos(string16(), 0);
+ autocomplete_controller_->Stop(false);
is_keyword_hint_ = false;
- view_->OnAfterPossibleChange();
- just_deleted_text_ = false; // OnAfterPossibleChange() erroneously sets this
- // since the edit contents have disappeared. It
- // doesn't really matter, but we clear it to be
- // consistent.
+
+ if (popup_->IsOpen())
+ popup_->SetSelectedLineState(AutocompletePopupModel::KEYWORD);
+
+ string16 display_text = autocomplete_controller_->keyword_provider()->
+ SplitReplacementStringFromInput(
+ CurrentMatch().associated_keyword->fill_into_edit, true);
+ view_->SetUserText(string16(), display_text, false);
+
UserMetrics::RecordAction(UserMetricsAction("AcceptedKeywordHint"));
return true;
}
void AutocompleteEditModel::ClearKeyword(const string16& visible_text) {
- view_->OnBeforePossibleChange();
- const string16 window_text(keyword_ + visible_text);
- view_->SetWindowTextAndCaretPos(window_text.c_str(), keyword_.length());
- keyword_.clear();
- is_keyword_hint_ = false;
- view_->OnAfterPossibleChange();
- just_deleted_text_ = true; // OnAfterPossibleChange() fails to clear this
- // since the edit contents have actually grown
- // longer.
+ autocomplete_controller_->Stop(false);
+ ClearPopupKeywordMode();
+
+ string16 window_text(keyword_);
+
+ if (!visible_text.empty())
+ window_text.append(char16(' ') + visible_text);
+
+ // Only reset the result if the edit text has changed since the
+ // keyword was accepted.
+ if (just_deleted_text_) {
+ view_->OnBeforePossibleChange();
+ view_->SetWindowTextAndCaretPos(window_text.c_str(), keyword_.length());
+ keyword_.clear();
+ is_keyword_hint_ = false;
+ view_->OnAfterPossibleChange();
+ just_deleted_text_ = true; // OnAfterPossibleChange() fails to clear this
+ // since the edit contents have actually grown
+ // longer.
+ } else {
+ view_->SetUserText(window_text, window_text, false);
+ is_keyword_hint_ = true;
+ OnChanged();
+ }
}
const AutocompleteResult& AutocompleteEditModel::result() const {
@@ -868,8 +888,12 @@
// can be many of these as a user types an initial series of characters,
// the OS DNS cache could suffer eviction problems for minimal gain.
- is_keyword_hint = popup_->GetKeywordForMatch(*match, &keyword);
+ keyword = match->keyword;
Peter Kasting 2011/12/15 22:56:04 Nit: Shorter: is_keyword_hint = match->asso
+ is_keyword_hint = match->associated_keyword.get() != NULL;
+ if (is_keyword_hint)
+ keyword = match->associated_keyword->keyword;
}
+
popup_->OnResultChanged();
OnPopupDataChanged(inline_autocomplete_text, NULL, keyword,
is_keyword_hint);
@@ -902,6 +926,12 @@
return !is_keyword_hint_ && !keyword_.empty();
}
+void AutocompleteEditModel::ClearPopupKeywordMode() const {
+ if (popup_->IsOpen() &&
+ popup_->selected_line_state() == AutocompletePopupModel::KEYWORD)
+ popup_->SetSelectedLineState(AutocompletePopupModel::NORMAL);
+}
+
string16 AutocompleteEditModel::DisplayTextFromUserText(
const string16& text) const {
return KeywordIsSelected() ?
@@ -1001,7 +1031,9 @@
TRIM_LEADING, &keyword);
// Only allow exact keyword match if |keyword| represents a keyword hint.
- return keyword.length() && popup_->GetKeywordForText(keyword, &keyword);
+ return keyword.length() &&
+ !autocomplete_controller_->keyword_provider()->
+ GetKeywordForText(keyword).empty();
}
bool AutocompleteEditModel::DoInstant(const AutocompleteMatch& match,

Powered by Google App Engine
This is Rietveld 408576698