diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_mac.h | 6 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_mac.mm | 25 |
2 files changed, 31 insertions, 0 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h index 0c0cb2b..e3c6372 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h @@ -116,6 +116,12 @@ class AutocompleteEditViewMac : public AutocompleteEditView { // if so. Returns true if the tab should be eaten. bool OnTabPressed(); + // Called when the user hits backspace in |field_|. Checks whether + // keyword search is being terminated. Returns true if the + // backspace should be intercepted (not forwarded on to the standard + // machinery). + bool OnBackspacePressed(); + void AcceptInput(WindowOpenDisposition disposition, bool for_drop); // Helper for LocationBarViewMac. Selects all in |field_|. diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm index 9ca8a6b..69a1b4e 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm @@ -630,6 +630,25 @@ bool AutocompleteEditViewMac::OnTabPressed() { return false; } +bool AutocompleteEditViewMac::OnBackspacePressed() { + // Don't intercept if not in keyword search mode. + if (model_->is_keyword_hint() || model_->keyword().empty()) { + return false; + } + + // Don't intercept if there is a selection, or the cursor isn't at + // the leftmost position. + const NSRange selection = GetSelectedRange(); + if (selection.length > 0 || selection.location > 0) { + return false; + } + + // We're showing a keyword and the user pressed backspace at the + // beginning of the text. Delete the selected keyword. + model_->ClearKeyword(GetText()); + return true; +} + bool AutocompleteEditViewMac::IsPopupOpen() const { return popup_view_->IsOpen(); } @@ -757,6 +776,12 @@ std::wstring AutocompleteEditViewMac::GetClipboardText(Clipboard* clipboard) { return YES; } + if (cmd == @selector(deleteBackward:)) { + if (edit_view_->OnBackspacePressed()) { + return YES; + } + } + // Capture the state before the operation changes the content. // TODO(shess): Determine if this is always redundent WRT the call // in -controlTextDidChange:. |