diff options
author | rohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-23 19:09:37 +0000 |
---|---|---|
committer | rohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-23 19:09:37 +0000 |
commit | 722ec18ab0d520ff1b029bb961a92618c39f9f2d (patch) | |
tree | 3e6ca2ec1bbde087a0e9dffcfdad1e45e9cfaf0e /chrome/browser/autocomplete/autocomplete_edit_view_mac.mm | |
parent | f02ea3bb8172bde0d154b51782876eb12d4a03c9 (diff) | |
download | chromium_src-722ec18ab0d520ff1b029bb961a92618c39f9f2d.zip chromium_src-722ec18ab0d520ff1b029bb961a92618c39f9f2d.tar.gz chromium_src-722ec18ab0d520ff1b029bb961a92618c39f9f2d.tar.bz2 |
[Mac] Fixes a bug where instant suggest text would disappear on every other keystroke.
Implements DeleteAtEndPressed(), which is needed for verbatim instant support.
BUG=56385,59217,64212
TEST=Open chrome with instant enabled. Type "nswi" into omnibox. Should suggest "nswindow." Now type "n." Should continue to suggest "nswindow."
TEST=Open chrome with instant enabled. Type "nswind" into omnibox. Should suggest "nswindow." Delete one character. Should not suggest "nswindow."
Review URL: http://codereview.chromium.org/5288003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67129 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete/autocomplete_edit_view_mac.mm')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_mac.mm | 19 |
1 files changed, 16 insertions, 3 deletions
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:)) { |