Index: chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
=================================================================== |
--- chrome/browser/ui/views/omnibox/omnibox_view_views.cc (revision 119905) |
+++ chrome/browser/ui/views/omnibox/omnibox_view_views.cc (working copy) |
@@ -264,10 +264,18 @@ |
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; |
@@ -461,14 +469,14 @@ |
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); |
} |
@@ -544,8 +552,7 @@ |
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( |