Copy/paste from a WebKit window to a TextEdit window loses fonts.
authorenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 14 Feb 2011 23:35:34 +0000 (23:35 +0000)
committerenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 14 Feb 2011 23:35:34 +0000 (23:35 +0000)
<rdar://problem/8623090>
https://bugs.webkit.org/show_bug.cgi?id=54416

Reviewed by Dan Bernstein.

We don't have the complete solution that fixes this problem for WebKit2 yet.
This patch fixes the regression in WebKit.

* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::writeSelection): For WebKit2 use only plain text,
for WebKit use the original API to create the NSAttributedString.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@78517 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/mac/PasteboardMac.mm

index 17b051c..f0d56a2 100644 (file)
@@ -1,3 +1,18 @@
+2011-02-14  Enrica Casucci  <enrica@apple.com>
+
+        Copy/paste from a WebKit window to a TextEdit window loses fonts.
+        <rdar://problem/8623090>
+        https://bugs.webkit.org/show_bug.cgi?id=54416
+        
+        Reviewed by Dan Bernstein.
+        
+        We don't have the complete solution that fixes this problem for WebKit2 yet.
+        This patch fixes the regression in WebKit.
+
+        * platform/mac/PasteboardMac.mm:
+        (WebCore::Pasteboard::writeSelection): For WebKit2 use only plain text,
+        for WebKit use the original API to create the NSAttributedString.
+
 2011-02-14  Levi Weintraub  <leviw@chromium.org>
 
         Reviewed by Alexey Proskuryakov.
index 65180a0..24ffff7 100644 (file)
@@ -34,6 +34,7 @@
 #import "Editor.h"
 #import "EditorClient.h"
 #import "Frame.h"
+#import "FrameView.h"
 #import "FrameLoaderClient.h"
 #import "HitTestResult.h"
 #import "HTMLAnchorElement.h"
@@ -56,7 +57,6 @@
 @interface NSAttributedString (AppKitSecretsIKnowAbout)
 - (id)_initWithDOMRange:(DOMRange *)domRange;
 @end
-
 namespace WebCore {
 
 // FIXME: It's not great to have these both here and in WebKit.
@@ -144,8 +144,9 @@ void Pasteboard::writeSelection(NSPasteboard* pasteboard, Range* selectedRange,
         Pasteboard::generalPasteboard(); // Initializes pasteboard types.
     ASSERT(selectedRange);
     
-    NSAttributedString *attributedString = [[[NSAttributedString alloc] initWithString:selectedRange->text()] autorelease];
-
+    // Using different API for WebKit and WebKit2.
+    // FIXME - We need to have a way to create the NSAttributedString for WebKit2 that doesn't require accessing the WebFrame.
+    NSAttributedString *attributedString = (frame->view()->platformWidget()) ? [[[NSAttributedString alloc] _initWithDOMRange:kit(selectedRange)] autorelease] : [[[NSAttributedString alloc] initWithString:selectedRange->text()] autorelease];
 #ifdef BUILDING_ON_TIGER
     // 4930197: Mail overrides [WebHTMLView pasteboardTypesForSelection] in order to add another type to the pasteboard
     // after WebKit does.  On Tiger we must call this function so that Mail code will be executed, meaning that