OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" | 5 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" |
6 | 6 |
7 #include <Carbon/Carbon.h> // kVK_Return | 7 #include <Carbon/Carbon.h> // kVK_Return |
8 #include "app/gfx/font.h" | 8 #include "app/gfx/font.h" |
9 #include "app/resource_bundle.h" | 9 #include "app/resource_bundle.h" |
10 #include "base/clipboard.h" | 10 #include "base/clipboard.h" |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 // One option would seem to be to check for a non-nil field | 358 // One option would seem to be to check for a non-nil field |
359 // editor, and check it's selected range against its length. | 359 // editor, and check it's selected range against its length. |
360 model_->StartAutocomplete(false); | 360 model_->StartAutocomplete(false); |
361 } | 361 } |
362 | 362 |
363 void AutocompleteEditViewMac::ClosePopup() { | 363 void AutocompleteEditViewMac::ClosePopup() { |
364 popup_view_->GetModel()->StopAutocomplete(); | 364 popup_view_->GetModel()->StopAutocomplete(); |
365 } | 365 } |
366 | 366 |
367 void AutocompleteEditViewMac::SetText(const std::wstring& display_text) { | 367 void AutocompleteEditViewMac::SetText(const std::wstring& display_text) { |
368 // Exit if an input method is composing text. | |
369 // NSTextView finishes an ongoing composition when updating the value of an | |
370 // NSTextField instance. This prevents inputting non-ASCII characters which | |
371 // need input methods, such as Latin characters, CJK characters, etc. | |
372 // To prevent updating this NSTextField value while an input method is | |
373 // composing text, we check whether or not the field editor for this control | |
374 // has marked text, text being composed by an input method, and return if | |
375 // the editor has marked text. | |
376 NSTextView* text_view = static_cast<NSTextView*>([field_ currentEditor]); | |
377 if (text_view && [text_view hasMarkedText]) | |
378 return; | |
379 | |
380 NSString* ss = base::SysWideToNSString(display_text); | 368 NSString* ss = base::SysWideToNSString(display_text); |
381 NSMutableAttributedString* as = | 369 NSMutableAttributedString* as = |
382 [[[NSMutableAttributedString alloc] initWithString:ss] autorelease]; | 370 [[[NSMutableAttributedString alloc] initWithString:ss] autorelease]; |
383 NSFont* font = ResourceBundle::GetSharedInstance().GetFont( | 371 NSFont* font = ResourceBundle::GetSharedInstance().GetFont( |
384 ResourceBundle::BaseFont).nativeFont(); | 372 ResourceBundle::BaseFont).nativeFont(); |
385 [as addAttribute:NSFontAttributeName value:font | 373 [as addAttribute:NSFontAttributeName value:font |
386 range:NSMakeRange(0, [as length])]; | 374 range:NSMakeRange(0, [as length])]; |
387 | 375 |
388 url_parse::Parsed parts; | 376 url_parse::Parsed parts; |
389 AutocompleteInput::Parse(display_text, model_->GetDesiredTLD(), | 377 AutocompleteInput::Parse(display_text, model_->GetDesiredTLD(), |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
800 // prepended and ".com" appended. This calls down to | 788 // prepended and ".com" appended. This calls down to |
801 // AutocompleteEditModel::OnControlKeyChanged() so that it can change | 789 // AutocompleteEditModel::OnControlKeyChanged() so that it can change |
802 // the popup to reflect this. See autocomplete_edit.cc | 790 // the popup to reflect this. See autocomplete_edit.cc |
803 // OnControlKeyChanged() and OnAfterPossibleChange(). | 791 // OnControlKeyChanged() and OnAfterPossibleChange(). |
804 - (void)control:(NSControl*)control flagsChanged:(NSEvent*)theEvent { | 792 - (void)control:(NSControl*)control flagsChanged:(NSEvent*)theEvent { |
805 BOOL controlFlag = ([theEvent modifierFlags]&NSControlKeyMask) != 0; | 793 BOOL controlFlag = ([theEvent modifierFlags]&NSControlKeyMask) != 0; |
806 edit_view_->OnControlKeyChanged(controlFlag); | 794 edit_view_->OnControlKeyChanged(controlFlag); |
807 } | 795 } |
808 | 796 |
809 @end | 797 @end |
OLD | NEW |