Index: chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
=================================================================== |
--- chrome/browser/autocomplete/autocomplete_edit_view_mac.mm (revision 23951) |
+++ chrome/browser/autocomplete/autocomplete_edit_view_mac.mm (working copy) |
@@ -292,6 +292,7 @@ |
if (update_popup) { |
UpdatePopup(); |
} |
+ controller_->OnChanged(); |
} |
NSRange AutocompleteEditViewMac::GetSelectedRange() const { |
@@ -427,6 +428,22 @@ |
} |
[field_ setObjectValue:as]; |
+ |
+ // TODO(shess): This may be an appropriate place to call: |
+ // controller_->OnChanged(); |
+ // In the current implementation, this tells LocationBarViewMac to |
+ // mess around with |model_| and update |field_|. Unfortunately, |
+ // when I look at our peer implementations, it's not entirely clear |
+ // to me if this is safe. SetText() is sort of an utility method, |
+ // and different callers sometimes have different needs. Research |
+ // this issue so that it can be added safely. |
+ |
+ // TODO(shess): Also, consider whether this code couldn't just |
+ // manage things directly. Windows uses a series of overlaid view |
+ // objects to accomplish the hinting stuff that OnChanged() does, so |
+ // it makes sense to have it in the controller that lays those |
+ // things out. Mac instead pushes the support into a custom |
+ // text-field implementation. |
} |
void AutocompleteEditViewMac::SetTextAndSelectedRange( |
@@ -454,6 +471,7 @@ |
} |
SetWindowTextAndCaretPos(display_text, display_text.size()); |
+ controller_->OnChanged(); |
} |
bool AutocompleteEditViewMac::OnInlineAutocompleteTextMaybeChanged( |
@@ -468,6 +486,7 @@ |
DCHECK_LE(user_text_length, display_text.size()); |
const NSRange range = NSMakeRange(user_text_length, display_text.size()); |
SetTextAndSelectedRange(display_text, range); |
+ controller_->OnChanged(); |
return true; |
} |
@@ -525,6 +544,7 @@ |
// fails for us in case you copy the URL and paste the identical URL |
// back (we'll lose the styling). |
EmphasizeURLComponents(); |
+ controller_->OnChanged(); |
return something_changed; |
} |
@@ -614,6 +634,10 @@ |
model_->AcceptInput(disposition, for_drop); |
} |
+void AutocompleteEditViewMac::AcceptKeyword() { |
+ model_->AcceptKeyword(); |
+} |
+ |
void AutocompleteEditViewMac::FocusLocation() { |
[[field_ window] makeFirstResponder:field_]; |
DCHECK_EQ([field_ currentEditor], [[field_ window] firstResponder]); |
@@ -699,6 +723,11 @@ |
return YES; |
} |
+ if (cmd == @selector(insertTab:)) { |
+ edit_view_->AcceptKeyword(); |
+ return YES; |
+ } |
+ |
// |-noop:| is sent when the user presses Cmd+Return. Override the no-op |
// behavior with the proper WindowOpenDisposition. |
NSEvent* event = [NSApp currentEvent]; |