summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_mac.mm12
1 files changed, 12 insertions, 0 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
index 5843584..feb7b453 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
@@ -364,6 +364,18 @@ void AutocompleteEditViewMac::ClosePopup() {
}
void AutocompleteEditViewMac::SetText(const std::wstring& display_text) {
+ // Exit if an input method is composing text.
+ // NSTextView finishes an ongoing composition when updating the value of an
+ // NSTextField instance. This prevents inputting non-ASCII characters which
+ // need input methods, such as Latin characters, CJK characters, etc.
+ // To prevent updating this NSTextField value while an input method is
+ // composing text, we check whether or not the field editor for this control
+ // has marked text, text being composed by an input method, and return if
+ // the editor has marked text.
+ NSTextView* text_view = static_cast<NSTextView*>([field_ currentEditor]);
+ if (text_view && [text_view hasMarkedText])
+ return;
+
NSString* ss = base::SysWideToNSString(display_text);
NSMutableAttributedString* as =
[[[NSMutableAttributedString alloc] initWithString:ss] autorelease];