summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/views/omnibox/omnibox_view_views.cc')
-rw-r--r--chrome/browser/ui/views/omnibox/omnibox_view_views.cc31
1 files changed, 22 insertions, 9 deletions
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index b22f7d2f..21284d1 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -255,10 +255,18 @@ bool OmniboxViewViews::HandleAfterKeyEvent(const views::KeyEvent& event,
handled = true;
} else if (!handled &&
event.key_code() == ui::VKEY_TAB &&
- !event.IsShiftDown() &&
!event.IsControlDown()) {
- if (model_->is_keyword_hint()) {
+ if (model_->is_keyword_hint() && !event.IsShiftDown()) {
handled = model_->AcceptKeyword();
+ } else if (model_->popup_model()->IsOpen()) {
+ if (event.IsShiftDown() &&
+ model_->popup_model()->selected_line_state() ==
+ AutocompletePopupModel::KEYWORD) {
+ model_->ClearKeyword(GetText());
+ } else {
+ model_->OnUpOrDownKeyPressed(event.IsShiftDown() ? -1 : 1);
+ }
+ handled = true;
} else {
string16::size_type start = 0;
string16::size_type end = 0;
@@ -449,16 +457,22 @@ void OmniboxViewViews::SetUserText(const string16& text,
const string16& display_text,
bool update_popup) {
model_->SetUserText(text);
- SetWindowTextAndCaretPos(display_text, display_text.length());
- if (update_popup)
- UpdatePopup();
- TextChanged();
+ SetWindowTextAndCaretPos(display_text, display_text.length(), update_popup,
+ true);
}
void OmniboxViewViews::SetWindowTextAndCaretPos(const string16& text,
- size_t caret_pos) {
+ size_t caret_pos,
+ bool update_popup,
+ bool notify_text_changed) {
const ui::Range range(caret_pos, caret_pos);
SetTextAndSelectedRange(text, range);
+
+ if (update_popup)
+ UpdatePopup();
+
+ if (notify_text_changed)
+ TextChanged();
}
void OmniboxViewViews::SetForcedQuery() {
@@ -532,8 +546,7 @@ void OmniboxViewViews::OnTemporaryTextMaybeChanged(
if (save_original_selection)
textfield_->GetSelectedRange(&saved_temporary_selection_);
- SetWindowTextAndCaretPos(display_text, display_text.length());
- TextChanged();
+ SetWindowTextAndCaretPos(display_text, display_text.length(), false, true);
}
bool OmniboxViewViews::OnInlineAutocompleteTextMaybeChanged(