Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5420)

Unified Diff: chrome/browser/autocomplete/autocomplete_edit_view_mac.mm

Issue 125201: Fix bug where the autocomplete text was being overridden by the user-entered text. (Closed)
Patch Set: Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_edit_view_mac.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_edit_view_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698