Reviewed by Geoff and Justin.
authoroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Jun 2007 00:15:31 +0000 (00:15 +0000)
committeroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Jun 2007 00:15:31 +0000 (00:15 +0000)
        Fix for <rdar://problem/5246941> Clicking URL field on
        Safari causes halt for a minute when using input methods.
        and <rdar://problem/5245964> Safari hangs for several
        seconds when trying to select text using mouse

        This is a by product of the textStorage hack used to fix
        rdar://problem/5000470 -- TSM calls textStorage repeatedly
        when changing focus, on certain mouse events, etc.  If there
        is no selection/editable region we repeatedly create an
        NSAttributedString from the full document.  If the document is
        sufficiently long this starts consuming an inordinate amount of
        time.

        This check should really have been present in the original
        patch.

        * WebKit.xcodeproj/project.pbxproj:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView textStorage]):

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

WebKit/ChangeLog
WebKit/WebKit.xcodeproj/project.pbxproj
WebKit/WebView/WebHTMLView.mm

index 65d7eef48d15bba661f832fc4b1597ca38f21256..d8b6fc24d7df24d4fc8dcce603038c2540b63614 100644 (file)
@@ -1,3 +1,27 @@
+2007-06-04  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Geoff and Justin.
+
+        Fix for <rdar://problem/5246941> Clicking URL field on 
+        Safari causes halt for a minute when using input methods.
+        and <rdar://problem/5245964> Safari hangs for several 
+        seconds when trying to select text using mouse
+        
+        This is a by product of the textStorage hack used to fix 
+        rdar://problem/5000470 -- TSM calls textStorage repeatedly
+        when changing focus, on certain mouse events, etc.  If there
+        is no selection/editable region we repeatedly create an     
+        NSAttributedString from the full document.  If the document is
+        sufficiently long this starts consuming an inordinate amount of 
+        time.
+        
+        This check should really have been present in the original 
+        patch.
+
+        * WebKit.xcodeproj/project.pbxproj:
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView textStorage]):
+
 2007-05-31  David Hyatt  <hyatt@apple.com>
 
         Fix for 11768, Flash plugin does not respect clips set by CSS.
index 8a9e808ff7851f3fd1491fc65ce86766cc5b7a04..8355bfffc646f26bacd8ac32a28a182863fb3118 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        buildConfigurationList = 149C283208902B0F008A9EFC /* Build configuration list for PBXProject "WebKit" */;
+                       compatibilityVersion = "Xcode 2.4";
                        hasScannedForEncodings = 1;
                        knownRegions = (
                                English,
index 86c9bdd3920bdf57f664f02c83888d9ed0b69b3c..27c4015b24986f0ae9479d142d09078c26004231 100644 (file)
@@ -5907,6 +5907,10 @@ static CGPoint coreGraphicsScreenPointForAppKitScreenPoint(NSPoint point)
 
 - (NSAttributedString *)textStorage
 {
+    Frame* coreFrame = core([self _frame]);
+    if (!coreFrame || coreFrame->selectionController()->isNone() 
+        || !coreFrame->selectionController()->isContentEditable())
+        return nil;
     NSAttributedString *result = [self attributedSubstringFromRange:NSMakeRange(0, UINT_MAX)];
     // We have to return an empty string rather than null to prevent TSM from calling -string
     return result ? result : [[[NSAttributedString alloc] initWithString:@""] autorelease];