diff options
Diffstat (limited to 'chrome/browser/ui/views/omnibox/omnibox_view_views.cc')
-rw-r--r-- | chrome/browser/ui/views/omnibox/omnibox_view_views.cc | 31 |
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( |