diff options
3 files changed, 24 insertions, 4 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h index 264b163..b02bafc 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h @@ -188,6 +188,12 @@ class AutocompleteEditViewMac : public AutocompleteEditView, // the field. size_t suggest_text_length_; + // Was delete pressed? + bool delete_was_pressed_; + + // Was the delete key pressed with an empty selection at the end of the edit? + bool delete_at_end_pressed_; + // The maximum/standard line height for the displayed text. CGFloat line_height_; diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm index 885328f..b91d3a5 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm @@ -175,6 +175,8 @@ AutocompleteEditViewMac::AutocompleteEditViewMac( command_updater_(command_updater), field_(field), suggest_text_length_(0), + delete_was_pressed_(false), + delete_at_end_pressed_(false), line_height_(0) { DCHECK(controller); DCHECK(toolbar_model); @@ -378,8 +380,7 @@ bool AutocompleteEditViewMac::IsSelectAll() { } bool AutocompleteEditViewMac::DeleteAtEndPressed() { - // TODO: implement me. - return false; + return delete_at_end_pressed_; } void AutocompleteEditViewMac::GetSelectionBounds(std::wstring::size_type* start, @@ -434,8 +435,10 @@ void AutocompleteEditViewMac::UpdatePopup() { if ([editor hasMarkedText]) prevent_inline_autocomplete = true; - if (NSMaxRange([editor selectedRange]) < [[editor textStorage] length]) + if (NSMaxRange([editor selectedRange]) < + [[editor textStorage] length] - suggest_text_length_) { prevent_inline_autocomplete = true; + } } model_->StartAutocomplete([editor selectedRange].length != 0, @@ -684,9 +687,14 @@ bool AutocompleteEditViewMac::OnAfterPossibleChange() { (length < text_before_change_.length() && new_selection.location <= selection_before_change_.location); + delete_at_end_pressed_ = false; + const bool something_changed = model_->OnAfterPossibleChange(new_text, selection_differs, text_differs, just_deleted_text, at_end_of_edit); + if (delete_was_pressed_ && at_end_of_edit) + delete_at_end_pressed_ = true; + // Restyle in case the user changed something. // TODO(shess): I believe there are multiple-redraw cases, here. // Linux watches for something_changed && text_differs, but that @@ -695,6 +703,8 @@ bool AutocompleteEditViewMac::OnAfterPossibleChange() { EmphasizeURLComponents(); controller_->OnChanged(); + delete_was_pressed_ = false; + return something_changed; } @@ -739,6 +749,9 @@ bool AutocompleteEditViewMac::OnDoCommandBySelector(SEL cmd) { SetSuggestText(string16()); } + if (cmd == @selector(deleteForward:)) + delete_was_pressed_ = true; + // Don't intercept up/down-arrow if the popup isn't open. if (popup_view_->IsOpen()) { if (cmd == @selector(moveDown:)) { diff --git a/chrome/browser/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/cocoa/location_bar/location_bar_view_mac.mm index c897465..e4b2ce1 100644 --- a/chrome/browser/cocoa/location_bar/location_bar_view_mac.mm +++ b/chrome/browser/cocoa/location_bar/location_bar_view_mac.mm @@ -141,7 +141,8 @@ std::wstring LocationBarViewMac::GetInputString() const { } void LocationBarViewMac::SetSuggestedText(const string16& text) { - edit_view_->SetSuggestText(text); + edit_view_->SetSuggestText( + edit_view_->model()->UseVerbatimInstant() ? string16() : text); } WindowOpenDisposition LocationBarViewMac::GetWindowOpenDisposition() const { |