fixed: native rich text was parsed when pasted into plain textview

+ newline fix in rtf parser
This commit is contained in:
daboe01 committed 2016-12-11 22:42:43 +01:00
1 parent 9d7d8ddde9
commit d2a5e126ae
2 files changed
+10 -5

No files matched your search

+8 -5
View File
@@ -2505,16 +2505,21 @@ var _CPCopyPlaceholder = '-';
{
var nativeClipboard = (e.originalEvent || e).clipboardData,
richtext,
pasteboard = [CPPasteboard generalPasteboard];
pasteboard = [CPPasteboard generalPasteboard],
currentFirstResponder = [[CPApp keyWindow] firstResponder],
isPlain = NO;
if ([currentFirstResponder respondsToSelector:@selector(isRichText)] && ![currentFirstResponder isRichText])
isPlain = YES;
// this is the rich chrome / FF codepath (where we can use RTF directly)
if ((richtext = nativeClipboard.getData('text/rtf')) && !(!!window.event.shiftKey))
if ((richtext = nativeClipboard.getData('text/rtf')) && !(!!window.event.shiftKey) && !isPlain)
{
e.preventDefault();
// setTimeout to prevent flickering in FF
setTimeout(function(){
[[[CPApp keyWindow] firstResponder] insertText:[[_CPRTFParser new] parseRTF:richtext]]
[currentFirstResponder insertText:[[_CPRTFParser new] parseRTF:richtext]]
}, 20);
return false;
@@ -2530,8 +2535,6 @@ var _CPCopyPlaceholder = '-';
[pasteboard declareTypes:[CPStringPboardType] owner:nil];
[pasteboard setString:data forType:CPStringPboardType];
}
var currentFirstResponder = [[CPApp keyWindow] firstResponder];
setTimeout(function(){ // prevent dom-flickering (only needed for FF)
[currentFirstResponder paste:self];
+2
View File
@@ -657,6 +657,8 @@ var kRgsymRtf = {
}
- (CPAttributedString)parseRTF:(CPString)rtf
{
rtf = rtf.replace(/\\\n/g, "\\par\n")
if (rtf.length == 0)
return '';