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 ff81db30fca5b1b3cd97a5d7a76aec62ae803850..a95be0d450c036b6fe499c97631021a142244d67 100644 |
--- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm |
@@ -586,24 +586,32 @@ void AutocompleteEditViewMac::OnPaste() { |
if (text.empty()) { |
return; |
} |
+ NSString* s = base::SysWideToNSString(text); |
- // If this paste will be replacing all the text, record that, so we |
- // can do different behaviors in such a case. |
- const NSRange allRange = NSMakeRange(0, [[field_ stringValue] length]); |
+ // -shouldChangeTextInRange:* and -didChangeText are documented in |
+ // NSTextView as things you need to do if you write additional |
+ // user-initiated editing functions. They cause the appropriate |
+ // delegate methods to be called. |
+ // TODO(shess): It would be nice to separate the Cocoa-specific code |
+ // from the Chrome-specific code. |
+ NSTextView* editor = static_cast<NSTextView*>([field_ currentEditor]); |
const NSRange selectedRange = GetSelectedRange(); |
- if (NSEqualRanges(allRange, selectedRange)) { |
- model_->on_paste_replacing_all(); |
- } |
- |
- // Force a Paste operation to trigger the text_changed code in |
- // OnAfterPossibleChange(), even if identical contents are pasted into the |
- // text box. |
- text_before_change_.clear(); |
+ if ([editor shouldChangeTextInRange:selectedRange replacementString:s]) { |
+ // If this paste will be replacing all the text, record that, so |
+ // we can do different behaviors in such a case. |
+ const NSRange allRange = NSMakeRange(0, [[field_ stringValue] length]); |
+ if (NSEqualRanges(allRange, selectedRange)) { |
+ model_->on_paste_replacing_all(); |
+ } |
- NSString* s = base::SysWideToNSString(text); |
- [[field_ currentEditor] replaceCharactersInRange:selectedRange withString:s]; |
+ // Force a Paste operation to trigger the text_changed code in |
+ // OnAfterPossibleChange(), even if identical contents are pasted |
+ // into the text box. |
+ text_before_change_.clear(); |
- OnAfterPossibleChange(); |
+ [editor replaceCharactersInRange:selectedRange withString:s]; |
+ [editor didChangeText]; |
rohitrao (ping after 24h)
2009/09/18 20:38:25
So this is what fires off controlTextDidChange?
Scott Hess - ex-Googler
2009/09/18 21:20:51
-didChangeText leads to -controlTextDidChange:, -s
|
+ } |
} |
bool AutocompleteEditViewMac::OnTabPressed() { |