diff options
5 files changed, 10 insertions, 4 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc index 230cbf7..b4b09c3 100644 --- a/chrome/browser/autocomplete/autocomplete_edit.cc +++ b/chrome/browser/autocomplete/autocomplete_edit.cc @@ -281,9 +281,11 @@ void AutocompleteEditModel::Revert() { } void AutocompleteEditModel::StartAutocomplete( + bool has_selected_text, bool prevent_inline_autocomplete) const { popup_->StartAutocomplete(user_text_, GetDesiredTLD(), prevent_inline_autocomplete || just_deleted_text_ || + (has_selected_text && inline_autocomplete_text_.empty()) || (paste_state_ != NONE), keyword_ui_state_ == KEYWORD); } diff --git a/chrome/browser/autocomplete/autocomplete_edit.h b/chrome/browser/autocomplete/autocomplete_edit.h index 99374a6..38804999 100644 --- a/chrome/browser/autocomplete/autocomplete_edit.h +++ b/chrome/browser/autocomplete/autocomplete_edit.h @@ -179,7 +179,8 @@ class AutocompleteEditModel : public NotificationObserver { void Revert(); // Directs the popup to start autocomplete. - void StartAutocomplete(bool prevent_inline_autocomplete) const; + void StartAutocomplete(bool has_selected_text, + bool prevent_inline_autocomplete) const; // Determines whether the user can "paste and go", given the specified text. // This also updates the internal paste-and-go-related state variables as diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc index 43ab216..e3508f4 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc @@ -479,7 +479,8 @@ void AutocompleteEditViewGtk::UpdatePopup() { // Don't inline autocomplete when the caret/selection isn't at the end of // the text. CharRange sel = GetSelection(); - model_->StartAutocomplete(std::max(sel.cp_max, sel.cp_min) < GetTextLength()); + model_->StartAutocomplete(sel.cp_min != sel.cp_max, + std::max(sel.cp_max, sel.cp_min) < GetTextLength()); } void AutocompleteEditViewGtk::ClosePopup() { diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm index 2fa3540..916cefc 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm @@ -407,7 +407,8 @@ void AutocompleteEditViewMac::UpdatePopup() { prevent_inline_autocomplete = true; } - model_->StartAutocomplete(prevent_inline_autocomplete); + model_->StartAutocomplete([editor selectedRange].length != 0, + prevent_inline_autocomplete); } void AutocompleteEditViewMac::ClosePopup() { diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc index f7204a5..802e54d 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc @@ -691,7 +691,8 @@ void AutocompleteEditViewWin::UpdatePopup() { // * The user is trying to compose something in an IME CHARRANGE sel; GetSel(sel); - model_->StartAutocomplete((sel.cpMax < GetTextLength()) || ime_composing); + model_->StartAutocomplete(sel.cpMax != sel.cpMin, + (sel.cpMax < GetTextLength()) || ime_composing); } void AutocompleteEditViewWin::ClosePopup() { |