summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
diff options
context:
space:
mode:
authorrohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-23 19:09:37 +0000
committerrohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-23 19:09:37 +0000
commit722ec18ab0d520ff1b029bb961a92618c39f9f2d (patch)
tree3e6ca2ec1bbde087a0e9dffcfdad1e45e9cfaf0e /chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
parentf02ea3bb8172bde0d154b51782876eb12d4a03c9 (diff)
downloadchromium_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.mm19
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:)) {