| Index: chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm (revision 119905)
|
| +++ chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm (working copy)
|
| @@ -329,11 +329,8 @@
|
| model_->SetUserText(text);
|
| // TODO(shess): TODO below from gtk.
|
| // TODO(deanm): something about selection / focus change here.
|
| - SetText(display_text);
|
| - if (update_popup) {
|
| - UpdatePopup();
|
| - }
|
| - model_->OnChanged();
|
| + SetWindowTextAndCaretPos(display_text, display_text.length(), update_popup,
|
| + true);
|
| }
|
|
|
| NSRange OmniboxViewMac::GetSelectedRange() const {
|
| @@ -364,9 +361,17 @@
|
| }
|
|
|
| void OmniboxViewMac::SetWindowTextAndCaretPos(const string16& text,
|
| - size_t caret_pos) {
|
| + size_t caret_pos,
|
| + bool update_popup,
|
| + bool notify_text_changed) {
|
| DCHECK_LE(caret_pos, text.size());
|
| SetTextAndSelectedRange(text, NSMakeRange(caret_pos, caret_pos));
|
| +
|
| + if (update_popup)
|
| + UpdatePopup();
|
| +
|
| + if (notify_text_changed)
|
| + TextChanged();
|
| }
|
|
|
| void OmniboxViewMac::SetForcedQuery() {
|
| @@ -532,6 +537,11 @@
|
| }
|
| }
|
|
|
| +void OmniboxViewMac::TextChanged() {
|
| + EmphasizeURLComponents();
|
| + model_->OnChanged();
|
| +}
|
| +
|
| void OmniboxViewMac::ApplyTextAttributes(const string16& display_text,
|
| NSMutableAttributedString* as) {
|
| NSUInteger as_length = [as length];
|
| @@ -606,7 +616,7 @@
|
| saved_temporary_selection_ = GetSelectedRange();
|
|
|
| suggest_text_length_ = 0;
|
| - SetWindowTextAndCaretPos(display_text, display_text.size());
|
| + SetWindowTextAndCaretPos(display_text, display_text.size(), false, false);
|
| model_->OnChanged();
|
| [field_ clearUndoChain];
|
| }
|
| @@ -698,8 +708,7 @@
|
| // Linux watches for something_changed && text_differs, but that
|
| // fails for us in case you copy the URL and paste the identical URL
|
| // back (we'll lose the styling).
|
| - EmphasizeURLComponents();
|
| - model_->OnChanged();
|
| + TextChanged();
|
|
|
| delete_was_pressed_ = false;
|
|
|
| @@ -793,7 +802,7 @@
|
| if (cmd == @selector(deleteForward:))
|
| delete_was_pressed_ = true;
|
|
|
| - // Don't intercept up/down-arrow if the popup isn't open.
|
| + // Don't intercept up/down-arrow or backtab if the popup isn't open.
|
| if (popup_view_->IsOpen()) {
|
| if (cmd == @selector(moveDown:)) {
|
| model_->OnUpOrDownKeyPressed(1);
|
| @@ -804,6 +813,13 @@
|
| model_->OnUpOrDownKeyPressed(-1);
|
| return true;
|
| }
|
| +
|
| + if (cmd == @selector(insertBacktab:) &&
|
| + model_->popup_model()->selected_line_state() ==
|
| + AutocompletePopupModel::KEYWORD) {
|
| + model_->ClearKeyword(GetText());
|
| + return true;
|
| + }
|
| }
|
|
|
| if (cmd == @selector(moveRight:)) {
|
| @@ -829,26 +845,10 @@
|
| return model_->OnEscapeKeyPressed();
|
| }
|
|
|
| - if (cmd == @selector(insertTab:) ||
|
| - cmd == @selector(insertTabIgnoringFieldEditor:)) {
|
| - if (model_->is_keyword_hint())
|
| - return model_->AcceptKeyword();
|
| -
|
| - if (suggest_text_length_ > 0) {
|
| - model_->CommitSuggestedText(true);
|
| - return true;
|
| - }
|
| -
|
| - if (!IsCaretAtEnd()) {
|
| - PlaceCaretAt(GetTextLength());
|
| - // OnDidChange() will not be triggered when setting selected range in this
|
| - // method, so we need to call it explicitly.
|
| - OnDidChange();
|
| - return true;
|
| - }
|
| -
|
| - if (model_->AcceptCurrentInstantPreview())
|
| - return true;
|
| + if ((cmd == @selector(insertTab:) ||
|
| + cmd == @selector(insertTabIgnoringFieldEditor:)) &&
|
| + model_->is_keyword_hint()) {
|
| + return model_->AcceptKeyword();
|
| }
|
|
|
| // |-noop:| is sent when the user presses Cmd+Return. Override the no-op
|
|
|