[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da

hyatt at apple.com hyatt at apple.com
Wed Dec 22 18:33:41 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit cad566e6dc637e20211fb58fcf1817dec873c3f2
Author: hyatt at apple.com <hyatt at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 13 23:05:25 2010 +0000

    https://bugs.webkit.org/show_bug.cgi?id=50963
    
    Reviewed by Sam Weinig.
    
    REGRESSION: Scrolling nested iframes is messed up on platforms that use the cross-platform ScrollView.
    
    The selfClipRect and childrenClipRect methods of RenderLayer were incorrectly relying on the bounding box
    of the root layer.  This bounding box was only coincidentally incorporating overflow as part of the
    RenderLayer's bounds.  Since I fixed the RenderLayer bounds to not include layout overflow any longer,
    this check is now exposed as incorrect.  Use the entire document size  when computing layer clip
    rects.
    
    * rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::childrenClipRect):
    (WebCore::RenderLayer::selfClipRect):
    * rendering/RenderView.h:
    (WebCore::RenderView::documentRect):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73972 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 2ff2431..6c05dcc 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,23 @@
+2010-12-13  David Hyatt  <hyatt at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        https://bugs.webkit.org/show_bug.cgi?id=50963
+
+        REGRESSION: Scrolling nested iframes is messed up on platforms that use the cross-platform ScrollView.
+       
+        The selfClipRect and childrenClipRect methods of RenderLayer were incorrectly relying on the bounding box
+        of the root layer.  This bounding box was only coincidentally incorporating overflow as part of the 
+        RenderLayer's bounds.  Since I fixed the RenderLayer bounds to not include layout overflow any longer,
+        this check is now exposed as incorrect.  Use the entire document size  when computing layer clip
+        rects.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::childrenClipRect):
+        (WebCore::RenderLayer::selfClipRect):
+        * rendering/RenderView.h:
+        (WebCore::RenderView::documentRect):
+
 2010-12-13  Simon Fraser  <simon.fraser at apple.com>
 
         GraphicsContextPrivate.h was removed. Nuke it from the project.
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index 6b97e57..362981c 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -3302,19 +3302,19 @@ void RenderLayer::calculateRects(const RenderLayer* rootLayer, const IntRect& pa
 
 IntRect RenderLayer::childrenClipRect() const
 {
-    RenderLayer* rootLayer = renderer()->view()->layer();
+    RenderView* renderView = renderer()->view();
     RenderLayer* clippingRootLayer = clippingRoot();
     IntRect layerBounds, backgroundRect, foregroundRect, outlineRect;
-    calculateRects(clippingRootLayer, rootLayer->boundingBox(rootLayer), layerBounds, backgroundRect, foregroundRect, outlineRect);
+    calculateRects(clippingRootLayer, renderView->documentRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
     return clippingRootLayer->renderer()->localToAbsoluteQuad(FloatQuad(foregroundRect)).enclosingBoundingBox();
 }
 
 IntRect RenderLayer::selfClipRect() const
 {
-    RenderLayer* rootLayer = renderer()->view()->layer();
+    RenderView* renderView = renderer()->view();
     RenderLayer* clippingRootLayer = clippingRoot();
     IntRect layerBounds, backgroundRect, foregroundRect, outlineRect;
-    calculateRects(clippingRootLayer, rootLayer->boundingBox(rootLayer), layerBounds, backgroundRect, foregroundRect, outlineRect);
+    calculateRects(clippingRootLayer, renderView->documentRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
     return clippingRootLayer->renderer()->localToAbsoluteQuad(FloatQuad(backgroundRect)).enclosingBoundingBox();
 }
 
diff --git a/WebCore/rendering/RenderView.h b/WebCore/rendering/RenderView.h
index d736e3d..d289af9 100644
--- a/WebCore/rendering/RenderView.h
+++ b/WebCore/rendering/RenderView.h
@@ -172,6 +172,7 @@ public:
     int docLeft() const;
     int docRight() const;
     int docWidth() const { return docRight() - docLeft(); }
+    IntRect documentRect() const { return IntRect(docLeft(), docTop(), docWidth(), docHeight()); }
 
 protected:
     virtual void mapLocalToContainer(RenderBoxModelObject* repaintContainer, bool useTransforms, bool fixed, TransformState&) const;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list