| Index: chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
|
| diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
|
| index 479d8e911f92699003cec4eeb628c987b3418d51..c64581119e782cdfb10246735969ba5f4e3475bb 100644
|
| --- a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
|
| +++ b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
|
| @@ -355,14 +355,12 @@ void OmniboxViewMac::SetForcedQuery() {
|
| // We need to do this first, else |SetSelectedRange()| won't work.
|
| FocusLocation(true);
|
|
|
| - const base::string16 current_text(GetText());
|
| - const size_t start = current_text.find_first_not_of(base::kWhitespaceUTF16);
|
| - if (start == base::string16::npos || (current_text[start] != '?')) {
|
| - SetUserText(base::ASCIIToUTF16("?"));
|
| - } else {
|
| - NSRange range = NSMakeRange(start + 1, current_text.size() - start - 1);
|
| - [[field_ currentEditor] setSelectedRange:range];
|
| - }
|
| + // Transition the user into keyword mode using their default search provider.
|
| + // Select their query if they typed one.
|
| + model()->EnterKeywordModeForDefaultSearchProvider(
|
| + ENTERED_KEYWORD_MODE_VIA_KEYBOARD_SHORTCUT);
|
| + NSRange range = NSMakeRange(0, GetText().size());
|
| + [[field_ currentEditor] setSelectedRange:range];
|
| }
|
|
|
| bool OmniboxViewMac::IsSelectAll() const {
|
| @@ -654,6 +652,8 @@ void OmniboxViewMac::OnBeforePossibleChange() {
|
|
|
| selection_before_change_ = GetSelectedRange();
|
| text_before_change_ = GetText();
|
| + keyword_before_change_ = model()->keyword();
|
| + is_keyword_selected_before_change_ = model()->is_keyword_selected();
|
| marked_range_before_change_ = GetMarkedRange();
|
| }
|
|
|
| @@ -663,6 +663,8 @@ bool OmniboxViewMac::OnAfterPossibleChange(bool allow_keyword_ui_change) {
|
|
|
| const NSRange new_selection(GetSelectedRange());
|
| const base::string16 new_text(GetText());
|
| + const base::string16 new_keyword(model()->keyword());
|
| + const bool new_is_keyword_selected = model()->is_keyword_selected();
|
| const size_t length = new_text.length();
|
|
|
| const bool selection_differs =
|
| @@ -671,6 +673,10 @@ bool OmniboxViewMac::OnAfterPossibleChange(bool allow_keyword_ui_change) {
|
| const bool at_end_of_edit = (length == new_selection.location);
|
| const bool text_differs = (new_text != text_before_change_) ||
|
| !NSEqualRanges(marked_range_before_change_, GetMarkedRange());
|
| + const bool keyword_differs =
|
| + (new_is_keyword_selected != is_keyword_selected_before_change_) ||
|
| + (new_is_keyword_selected && is_keyword_selected_before_change_ &&
|
| + new_keyword != keyword_before_change_);
|
|
|
| // When the user has deleted text, we don't allow inline
|
| // autocomplete. This is assumed if the text has gotten shorter AND
|
| @@ -691,7 +697,8 @@ bool OmniboxViewMac::OnAfterPossibleChange(bool allow_keyword_ui_change) {
|
| const bool something_changed = model()->OnAfterPossibleChange(
|
| text_before_change_, new_text, new_selection.location,
|
| NSMaxRange(new_selection), selection_differs, text_differs,
|
| - just_deleted_text, allow_keyword_ui_change && !IsImeComposing());
|
| + keyword_differs, just_deleted_text,
|
| + allow_keyword_ui_change && !IsImeComposing());
|
|
|
| if (delete_was_pressed_ && at_end_of_edit)
|
| delete_at_end_pressed_ = true;
|
|
|