summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_mac.h6
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_mac.mm19
-rw-r--r--chrome/browser/cocoa/location_bar/location_bar_view_mac.mm3
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 {