Reviewed by Darin
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Dec 2004 16:30:23 +0000 (16:30 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Dec 2004 16:30:23 +0000 (16:30 +0000)
        * WebView.subproj/WebHTMLView.m:
        (-[WebHTMLView drawRect:]): Work around for this bug:
        <rdar://problem/3908282> REGRESSION (Mail): No drag image dragging selected text in Blot and Mail
        The reason for the workaround is that this method is called explicitly from the code
        to generate a drag image, and at that time, getRectsBeingDrawn:count: will return a zero count.
        This code change uses the passed-in rect when the count is zero.

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

WebKit/ChangeLog
WebKit/WebView.subproj/WebHTMLView.m

index 42cb01d..d7b86d2 100644 (file)
@@ -1,3 +1,14 @@
+2004-12-08  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Darin
+
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView drawRect:]): Work around for this bug:
+        <rdar://problem/3908282> REGRESSION (Mail): No drag image dragging selected text in Blot and Mail
+        The reason for the workaround is that this method is called explicitly from the code
+        to generate a drag image, and at that time, getRectsBeingDrawn:count: will return a zero count.
+        This code change uses the passed-in rect when the count is zero.
+
 2004-12-07  Administrator  <cblu@apple.com>
 
        Support for fix for:
index 5191923..fccc33a 100644 (file)
@@ -1990,20 +1990,27 @@ static WebHTMLView *lastHitView = nil;
 - (void)drawRect:(NSRect)rect
 {
     LOG(View, "%@ drawing", self);
-    
+
     // Work around AppKit bug <rdar://problem/3875305> rect passed to drawRect: is too large.
     // Ignore the passed-in rect and instead union in the rectangles from getRectsBeingDrawn.
     // This does a better job of clipping out rects that are entirely outside the visible area.
     const NSRect *rects;
     int count;
     [self getRectsBeingDrawn:&rects count:&count];
-    rect = NSZeroRect;
-    int i;
-    for (i = 0; i < count; ++i) {
-        rect = NSUnionRect(rect, rects[i]);
-    }
-    if (rect.size.height == 0 || rect.size.width == 0) {
-        return;
+
+    // If count == 0 here, use the rect passed in for drawing. This is a workaround for:
+    // <rdar://problem/3908282> REGRESSION (Mail): No drag image dragging selected text in Blot and Mail
+    // The reason for the workaround is that this method is called explicitly from the code
+    // to generate a drag image, and at that time, getRectsBeingDrawn:count: will return a zero count.
+    if (count > 0) {
+        rect = NSZeroRect;
+        int i;
+        for (i = 0; i < count; ++i) {
+            rect = NSUnionRect(rect, rects[i]);
+        }
+        if (rect.size.height == 0 || rect.size.width == 0) {
+            return;
+        }
     }
 
     BOOL subviewsWereSetAside = _private->subviewsSetAside;