Index: chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
index 11c4dc3ed74820b858f7dc10ce46e7c5b04535b7..df8eb53d26214e43a387a862f2cbe6bf7ded60a2 100644 |
--- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
@@ -243,7 +243,7 @@ void AutocompleteEditViewMac::Update( |
// code compares the toolbar_model_ security level with the local |
// security level. Dig in and figure out why this isn't a no-op |
// that should go away. |
- UpdateAndStyleText(GetText()); |
+ EmphasizeURLComponents(); |
} |
} |
@@ -278,7 +278,7 @@ void AutocompleteEditViewMac::SetUserText(const std::wstring& text, |
model_->SetUserText(text); |
// TODO(shess): TODO below from gtk. |
// TODO(deanm): something about selection / focus change here. |
- UpdateAndStyleText(display_text); |
+ SetText(display_text); |
if (update_popup) { |
UpdatePopup(); |
} |
@@ -306,8 +306,7 @@ void AutocompleteEditViewMac::SetSelectedRange(const NSRange range) { |
void AutocompleteEditViewMac::SetWindowTextAndCaretPos(const std::wstring& text, |
size_t caret_pos) { |
DCHECK_LE(caret_pos, text.size()); |
- UpdateAndStyleText(text); |
- SetSelectedRange(NSMakeRange(caret_pos, caret_pos)); |
+ SetTextAndSelectedRange(text, NSMakeRange(caret_pos, caret_pos)); |
} |
void AutocompleteEditViewMac::SelectAll(bool reversed) { |
@@ -328,7 +327,7 @@ void AutocompleteEditViewMac::RevertAll() { |
// could only get there via UpdateAndStyleText() in the first place. |
// Dig into where this code can be called from and see if this line |
// can be removed. |
- UpdateAndStyleText(GetText()); |
+ EmphasizeURLComponents(); |
controller_->OnChanged(); |
} |
@@ -350,8 +349,7 @@ void AutocompleteEditViewMac::ClosePopup() { |
popup_view_->GetModel()->StopAutocomplete(); |
} |
-void AutocompleteEditViewMac::UpdateAndStyleText( |
- const std::wstring& display_text) { |
+void AutocompleteEditViewMac::SetText(const std::wstring& display_text) { |
NSString* ss = base::SysWideToNSString(display_text); |
NSMutableAttributedString* as = |
[[[NSMutableAttributedString alloc] initWithString:ss] autorelease]; |
@@ -403,6 +401,20 @@ void AutocompleteEditViewMac::UpdateAndStyleText( |
[field_ setObjectValue:as]; |
} |
+void AutocompleteEditViewMac::SetTextAndSelectedRange( |
+ const std::wstring& display_text, const NSRange range) { |
+ SetText(display_text); |
+ SetSelectedRange(range); |
+} |
+ |
+void AutocompleteEditViewMac::EmphasizeURLComponents() { |
+ if ([field_ currentEditor]) { |
+ SetTextAndSelectedRange(GetText(), GetSelectedRange()); |
+ } else { |
+ SetText(GetText()); |
+ } |
+} |
+ |
void AutocompleteEditViewMac::OnTemporaryTextMaybeChanged( |
const std::wstring& display_text, bool save_original_selection) { |
// TODO(shess): I believe this is for when the user arrows around |
@@ -425,16 +437,16 @@ bool AutocompleteEditViewMac::OnInlineAutocompleteTextMaybeChanged( |
return false; |
} |
- UpdateAndStyleText(display_text); |
DCHECK_LE(user_text_length, display_text.size()); |
- SetSelectedRange(NSMakeRange(user_text_length, display_text.size())); |
+ const NSRange range = NSMakeRange(user_text_length, display_text.size()); |
+ SetTextAndSelectedRange(display_text, range); |
+ |
return true; |
} |
void AutocompleteEditViewMac::OnRevertTemporaryText() { |
- UpdateAndStyleText(saved_temporary_text_); |
+ SetTextAndSelectedRange(saved_temporary_text_, saved_temporary_selection_); |
saved_temporary_text_.clear(); |
- SetSelectedRange(saved_temporary_selection_); |
} |
bool AutocompleteEditViewMac::IsFirstResponder() const { |
@@ -490,8 +502,11 @@ bool AutocompleteEditViewMac::OnAfterPossibleChange() { |
// flashing from when the user's typing replaces the selection which |
// is then re-created with the new autocomplete results. |
if (something_changed) { |
- UpdateAndStyleText(new_text); |
- SetSelectedRange(new_selection); |
+ // TODO(shess) I believe that this call is needless duplication of |
+ // effort. As best I can tell, something_changed can only be true |
+ // if |model_| called UpdatePopup(), which then updated us. But |
+ // the state involved seems substantial. |
+ EmphasizeURLComponents(); |
} |
return something_changed; |