[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

bdakin at apple.com bdakin at apple.com
Thu Apr 8 00:58:55 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit b19aed5116320a8fca5dac7b9be41fb2d4f0a6cf
Author: bdakin at apple.com <bdakin at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jan 8 23:35:19 2010 +0000

    WebCore: Fix for https://bugs.webkit.org/show_bug.cgi?id=32757 Repaint bug
    with -webkit-shadow on svg shapes
    -and-
    <rdar://problem/7389149>
    
    Reviewed by Oliver Hunt.
    
    Inflate the repaintRect for the shadow using its extent.
    * rendering/RenderForeignObject.cpp:
    (WebCore::RenderForeignObject::computeRectForRepaint):
    * rendering/RenderSVGImage.cpp:
    (WebCore::RenderSVGImage::computeRectForRepaint):
    * rendering/RenderSVGModelObject.cpp:
    (WebCore::RenderSVGModelObject::computeRectForRepaint):
    * rendering/RenderSVGRoot.cpp:
    (WebCore::RenderSVGRoot::repaintRectInLocalCoordinates):
    (WebCore::RenderSVGRoot::computeRectForRepaint):
    * rendering/RenderSVGText.cpp:
    (WebCore::RenderSVGText::computeRectForRepaint):
    * rendering/SVGRenderSupport.cpp:
    (WebCore::getSVGShadowExtent):
    (WebCore::SVGRenderBase::inflateForShadow):
    * rendering/SVGRenderSupport.h:
    
    LayoutTests: Tests for https://bugs.webkit.org/show_bug.cgi?id=32757 Repaint bug
    with -webkit-shadow on svg shapes
    -and-
    <rdar://problem/7389149>
    
    Reviewed by Oliver Hunt.
    
    * fast/repaint/moving-shadow-on-container.html: Added.
    * fast/repaint/moving-shadow-on-path.html: Added.
    * platform/mac/fast/repaint/moving-shadow-on-container-expected.checksum: Added.
    * platform/mac/fast/repaint/moving-shadow-on-container-expected.png: Added.
    * platform/mac/fast/repaint/moving-shadow-on-container-expected.txt: Added.
    * platform/mac/fast/repaint/moving-shadow-on-path-expected.checksum: Added.
    * platform/mac/fast/repaint/moving-shadow-on-path-expected.png: Added.
    * platform/mac/fast/repaint/moving-shadow-on-path-expected.txt: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53017 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index ff764de..34c0d5b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,21 @@
+2010-01-08  Beth Dakin  <bdakin at apple.com>
+
+        Reviewed by Oliver Hunt.
+
+        Tests for https://bugs.webkit.org/show_bug.cgi?id=32757 Repaint bug 
+        with -webkit-shadow on svg shapes
+        -and-
+        <rdar://problem/7389149>
+
+        * fast/repaint/moving-shadow-on-container.html: Added.
+        * fast/repaint/moving-shadow-on-path.html: Added.
+        * platform/mac/fast/repaint/moving-shadow-on-container-expected.checksum: Added.
+        * platform/mac/fast/repaint/moving-shadow-on-container-expected.png: Added.
+        * platform/mac/fast/repaint/moving-shadow-on-container-expected.txt: Added.
+        * platform/mac/fast/repaint/moving-shadow-on-path-expected.checksum: Added.
+        * platform/mac/fast/repaint/moving-shadow-on-path-expected.png: Added.
+        * platform/mac/fast/repaint/moving-shadow-on-path-expected.txt: Added.
+
 2010-01-08  Alexey Proskuryakov  <ap at apple.com>
 
         Reviewed by Darin Adler.
diff --git a/LayoutTests/fast/repaint/moving-shadow-on-container.html b/LayoutTests/fast/repaint/moving-shadow-on-container.html
new file mode 100644
index 0000000..26d4394
--- /dev/null
+++ b/LayoutTests/fast/repaint/moving-shadow-on-container.html
@@ -0,0 +1,93 @@
+<html>
+<head>
+<script src="resources/repaint.js"></script>
+<script language="javascript">
+<!--
+
+SVG_NS = 'http://www.w3.org/2000/svg';
+
+function repaintTest() {
+    var star = document.getElementById("first-star");
+    setCenterPosition(star, 0, 0);
+}
+
+function pathFromStar (radius, innerRadius, sides) {
+    var path = [];
+    for (var i = 0; i < sides * 2; ++i) {
+        var theta = Math.PI * i / sides + (Math.PI / 2);
+        var r = (i % 2) ? radius : innerRadius;
+        var x = r * Math.cos(theta);
+        var y = r * Math.sin(theta);
+        path.push((i ? 'L' : 'M'), x, y);
+    }
+    path.push('Z');
+    return path.join(' ');
+}
+
+function newSvgElement (tagName, parentNode, attrs) {
+    var node = document.createElementNS(SVG_NS, tagName);
+    if (attrs) {
+        for (var k in attrs) {
+            node.setAttribute(k, attrs[k]);
+        }
+    }
+    if (parentNode) {
+        parentNode.appendChild(node);
+    }
+    return node;
+}
+
+function setCenterPosition (node, x, y) {
+    node.setAttribute('transform', 'translate($1, $2)'
+        .replace('$1', x)
+        .replace('$2', y));
+}
+
+var armed = null;
+
+window.addEventListener('load', function () {
+
+    var svgContainer = newSvgElement('svg', document.body);
+    var shapes = [
+        { pos: [ 100, 100 ], size: 60, hasStroke: false },
+        { pos: [ 250, 100 ], size: 60, hasStroke: true },
+        { pos: [ 400, 100 ], size: 50, hasStroke: true }
+    ];
+    svgContainer.style.WebkitShadow = '5px 5px 5px red';
+    for (var i = 0; i < shapes.length; ++i) {
+        var shape = shapes[i];
+        var node = newSvgElement('path', svgContainer, {
+            d: pathFromStar(shape.size, shape.size / 2, 5),
+            fill: '#999',
+            stroke: 'black',
+            'stroke-width': 10,
+        });
+        if (i == 0)
+            node.id = "first-star";
+        setCenterPosition(node, shape.pos[0], shape.pos[1]);
+        if (shapes[i].hasStroke) {
+            node.setAttribute('stroke-dasharray', 20);
+        }
+        node.addEventListener('mousedown', function (ev) {
+            var e = ev || event;
+            armed = { node: e.target || e.srcElement };
+        });
+        node.addEventListener('mouseup', function () {
+            armed = null;
+        });
+    }
+    window.addEventListener('mousemove', function (ev) {
+        if (armed) {
+            var e = ev || event;
+            setCenterPosition(armed.node, e.clientX, e.clientY);
+        }
+    });
+});
+
+//-->
+</script>
+</head>
+<body onload="runRepaintTest();">
+
+</body>
+</html>
diff --git a/LayoutTests/fast/repaint/moving-shadow-on-path.html b/LayoutTests/fast/repaint/moving-shadow-on-path.html
new file mode 100644
index 0000000..346d03c
--- /dev/null
+++ b/LayoutTests/fast/repaint/moving-shadow-on-path.html
@@ -0,0 +1,93 @@
+<html>
+<head>
+<script src="resources/repaint.js"></script>
+<script language="javascript">
+<!--
+
+SVG_NS = 'http://www.w3.org/2000/svg';
+
+function repaintTest() {
+    var star = document.getElementById("first-star");
+    setCenterPosition(star, 0, 0);
+}
+
+function pathFromStar (radius, innerRadius, sides) {
+    var path = [];
+    for (var i = 0; i < sides * 2; ++i) {
+        var theta = Math.PI * i / sides + (Math.PI / 2);
+        var r = (i % 2) ? radius : innerRadius;
+        var x = r * Math.cos(theta);
+        var y = r * Math.sin(theta);
+        path.push((i ? 'L' : 'M'), x, y);
+    }
+    path.push('Z');
+    return path.join(' ');
+}
+
+function newSvgElement (tagName, parentNode, attrs) {
+    var node = document.createElementNS(SVG_NS, tagName);
+    if (attrs) {
+        for (var k in attrs) {
+            node.setAttribute(k, attrs[k]);
+        }
+    }
+    if (parentNode) {
+        parentNode.appendChild(node);
+    }
+    return node;
+}
+
+function setCenterPosition (node, x, y) {
+    node.setAttribute('transform', 'translate($1, $2)'
+        .replace('$1', x)
+        .replace('$2', y));
+}
+
+var armed = null;
+
+window.addEventListener('load', function () {
+
+    var svgContainer = newSvgElement('svg', document.body);
+    var shapes = [
+        { pos: [ 100, 100 ], size: 60, hasStroke: false },
+        { pos: [ 250, 100 ], size: 60, hasStroke: true },
+        { pos: [ 400, 100 ], size: 50, hasStroke: true }
+    ];
+    for (var i = 0; i < shapes.length; ++i) {
+        var shape = shapes[i];
+        var node = newSvgElement('path', svgContainer, {
+            d: pathFromStar(shape.size, shape.size / 2, 5),
+            fill: '#999',
+            stroke: 'black',
+            'stroke-width': 10,
+        });
+        node.style.WebkitShadow = '5px 5px 5px red';
+        if (i == 0)
+            node.id = "first-star";
+        setCenterPosition(node, shape.pos[0], shape.pos[1]);
+        if (shapes[i].hasStroke) {
+            node.setAttribute('stroke-dasharray', 20);
+        }
+        node.addEventListener('mousedown', function (ev) {
+            var e = ev || event;
+            armed = { node: e.target || e.srcElement };
+        });
+        node.addEventListener('mouseup', function () {
+            armed = null;
+        });
+    }
+    window.addEventListener('mousemove', function (ev) {
+        if (armed) {
+            var e = ev || event;
+            setCenterPosition(armed.node, e.clientX, e.clientY);
+        }
+    });
+});
+
+//-->
+</script>
+</head>
+<body onload="runRepaintTest();">
+
+</body>
+</html>
diff --git a/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.checksum b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.checksum
new file mode 100644
index 0000000..1b766bc
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.checksum
@@ -0,0 +1 @@
+3ca6e374e016a9889dbdfbf0c0721ed0
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.png b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.png
new file mode 100644
index 0000000..a2590f2
Binary files /dev/null and b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.png differ
diff --git a/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.txt b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.txt
new file mode 100644
index 0000000..69e1c4e
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-container-expected.txt
@@ -0,0 +1,9 @@
+layer at (0,0) size 785x616
+  RenderView at (0,0) size 785x600
+layer at (0,0) size 785x616
+  RenderBlock {HTML} at (0,0) size 785x616
+    RenderBody {BODY} at (8,8) size 769x600
+      RenderSVGRoot {svg} at (-59.81,-63.30) size 513.43x223.61
+        RenderPath {path} at (-59.81,-63.30) size 135.62x128.98 [stroke={[type=SOLID] [color=#000000] [stroke width=10.00]}] [fill={[type=SOLID] [color=#999999]}] [data="M0.00,30.00 L-35.27,48.54 L-28.53,9.27 L-57.06,-18.54 L-17.63,-24.27 L-0.00,-60.00 L17.63,-24.27 L57.06,-18.54 L28.53,9.27 L35.27,48.54 Z"]
+        RenderPath {path} at (200.68,46.49) size 117.09x113.83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,100.00)}] [stroke={[type=SOLID] [color=#000000] [stroke width=10.00] [dash array={20.00}]}] [fill={[type=SOLID] [color=#999999]}] [data="M0.00,30.00 L-35.27,48.54 L-28.53,9.27 L-57.06,-18.54 L-17.63,-24.27 L-0.00,-60.00 L17.63,-24.27 L57.06,-18.54 L28.53,9.27 L35.27,48.54 Z"]
+        RenderPath {path} at (349.70,46.70) size 103.91x110.89 [transform={m=((1.00,0.00)(0.00,1.00)) t=(400.00,100.00)}] [stroke={[type=SOLID] [color=#000000] [stroke width=10.00] [dash array={20.00}]}] [fill={[type=SOLID] [color=#999999]}] [data="M0.00,25.00 L-29.39,40.45 L-23.78,7.73 L-47.55,-15.45 L-14.69,-20.23 L-0.00,-50.00 L14.69,-20.23 L47.55,-15.45 L23.78,7.73 L29.39,40.45 Z"]
diff --git a/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.checksum b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.checksum
new file mode 100644
index 0000000..d2e261d
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.checksum
@@ -0,0 +1 @@
+0aa74bbf236c8e7af7e41dd1b54daa2e
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.png b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.png
new file mode 100644
index 0000000..d8f0a7e
Binary files /dev/null and b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.png differ
diff --git a/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.txt b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.txt
new file mode 100644
index 0000000..69e1c4e
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/repaint/moving-shadow-on-path-expected.txt
@@ -0,0 +1,9 @@
+layer at (0,0) size 785x616
+  RenderView at (0,0) size 785x600
+layer at (0,0) size 785x616
+  RenderBlock {HTML} at (0,0) size 785x616
+    RenderBody {BODY} at (8,8) size 769x600
+      RenderSVGRoot {svg} at (-59.81,-63.30) size 513.43x223.61
+        RenderPath {path} at (-59.81,-63.30) size 135.62x128.98 [stroke={[type=SOLID] [color=#000000] [stroke width=10.00]}] [fill={[type=SOLID] [color=#999999]}] [data="M0.00,30.00 L-35.27,48.54 L-28.53,9.27 L-57.06,-18.54 L-17.63,-24.27 L-0.00,-60.00 L17.63,-24.27 L57.06,-18.54 L28.53,9.27 L35.27,48.54 Z"]
+        RenderPath {path} at (200.68,46.49) size 117.09x113.83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,100.00)}] [stroke={[type=SOLID] [color=#000000] [stroke width=10.00] [dash array={20.00}]}] [fill={[type=SOLID] [color=#999999]}] [data="M0.00,30.00 L-35.27,48.54 L-28.53,9.27 L-57.06,-18.54 L-17.63,-24.27 L-0.00,-60.00 L17.63,-24.27 L57.06,-18.54 L28.53,9.27 L35.27,48.54 Z"]
+        RenderPath {path} at (349.70,46.70) size 103.91x110.89 [transform={m=((1.00,0.00)(0.00,1.00)) t=(400.00,100.00)}] [stroke={[type=SOLID] [color=#000000] [stroke width=10.00] [dash array={20.00}]}] [fill={[type=SOLID] [color=#999999]}] [data="M0.00,25.00 L-29.39,40.45 L-23.78,7.73 L-47.55,-15.45 L-14.69,-20.23 L-0.00,-50.00 L14.69,-20.23 L47.55,-15.45 L23.78,7.73 L29.39,40.45 Z"]
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 55ac0ee..bd6b50b 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,29 @@
+2010-01-08  Beth Dakin  <bdakin at apple.com>
+
+        Reviewed by Oliver Hunt.
+
+        Fix for https://bugs.webkit.org/show_bug.cgi?id=32757 Repaint bug 
+        with -webkit-shadow on svg shapes
+        -and-
+        <rdar://problem/7389149>
+
+        Inflate the repaintRect for the shadow using its extent.
+        * rendering/RenderForeignObject.cpp:
+        (WebCore::RenderForeignObject::computeRectForRepaint):
+        * rendering/RenderSVGImage.cpp:
+        (WebCore::RenderSVGImage::computeRectForRepaint):
+        * rendering/RenderSVGModelObject.cpp:
+        (WebCore::RenderSVGModelObject::computeRectForRepaint):
+        * rendering/RenderSVGRoot.cpp:
+        (WebCore::RenderSVGRoot::repaintRectInLocalCoordinates):
+        (WebCore::RenderSVGRoot::computeRectForRepaint):
+        * rendering/RenderSVGText.cpp:
+        (WebCore::RenderSVGText::computeRectForRepaint):
+        * rendering/SVGRenderSupport.cpp:
+        (WebCore::getSVGShadowExtent):
+        (WebCore::SVGRenderBase::inflateForShadow):
+        * rendering/SVGRenderSupport.h:
+
 2010-01-08  Kenneth Russell  <kbr at google.com>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebCore/rendering/RenderForeignObject.cpp b/WebCore/rendering/RenderForeignObject.cpp
index b15d55c..809ad5d 100644
--- a/WebCore/rendering/RenderForeignObject.cpp
+++ b/WebCore/rendering/RenderForeignObject.cpp
@@ -84,6 +84,7 @@ FloatRect RenderForeignObject::repaintRectInLocalCoordinates() const
 void RenderForeignObject::computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& rect, bool fixed)
 {
     rect = localToParentTransform().mapRect(rect);
+    inflateForShadow(style(), rect);
     RenderBlock::computeRectForRepaint(repaintContainer, rect, fixed);
 }
 
diff --git a/WebCore/rendering/RenderSVGImage.cpp b/WebCore/rendering/RenderSVGImage.cpp
index 27d1a40..ae648c6 100644
--- a/WebCore/rendering/RenderSVGImage.cpp
+++ b/WebCore/rendering/RenderSVGImage.cpp
@@ -175,6 +175,7 @@ IntRect RenderSVGImage::clippedOverflowRectForRepaint(RenderBoxModelObject* repa
 
 void RenderSVGImage::computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed)
 {
+    inflateForShadow(style(), repaintRect);
     SVGRenderBase::computeRectForRepaint(this, repaintContainer, repaintRect, fixed);
 }
 
diff --git a/WebCore/rendering/RenderSVGModelObject.cpp b/WebCore/rendering/RenderSVGModelObject.cpp
index 3fab5a6..045adb4 100644
--- a/WebCore/rendering/RenderSVGModelObject.cpp
+++ b/WebCore/rendering/RenderSVGModelObject.cpp
@@ -56,6 +56,7 @@ IntRect RenderSVGModelObject::clippedOverflowRectForRepaint(RenderBoxModelObject
 
 void RenderSVGModelObject::computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed)
 {
+    inflateForShadow(style(), repaintRect);
     SVGRenderBase::computeRectForRepaint(this, repaintContainer, repaintRect, fixed);
 }
 
diff --git a/WebCore/rendering/RenderSVGRoot.cpp b/WebCore/rendering/RenderSVGRoot.cpp
index 675d9a3..e68cfc8 100644
--- a/WebCore/rendering/RenderSVGRoot.cpp
+++ b/WebCore/rendering/RenderSVGRoot.cpp
@@ -251,7 +251,7 @@ FloatRect RenderSVGRoot::objectBoundingBox() const
 
 FloatRect RenderSVGRoot::repaintRectInLocalCoordinates() const
 {
-    // FIXME: This does not include the border but it should!
+    // FIXME: This does not include the border or shadow but it should!
     return computeContainerBoundingBox(this, true);
 }
 
@@ -262,8 +262,10 @@ TransformationMatrix RenderSVGRoot::localTransform() const
 
 void RenderSVGRoot::computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed)
 {
-    // Apply our local transforms (except for x/y translation) and call RenderBox's method to handle all the normal CSS Box model bits
+    // Apply our local transforms (except for x/y translation), then our shadow, 
+    // and then call RenderBox's method to handle all the normal CSS Box model bits
     repaintRect = localToBorderBoxTransform().mapRect(repaintRect);
+    inflateForShadow(style(), repaintRect);
     RenderBox::computeRectForRepaint(repaintContainer, repaintRect, fixed);
 }
 
diff --git a/WebCore/rendering/RenderSVGText.cpp b/WebCore/rendering/RenderSVGText.cpp
index 88ef87e..cf0fec1 100644
--- a/WebCore/rendering/RenderSVGText.cpp
+++ b/WebCore/rendering/RenderSVGText.cpp
@@ -59,6 +59,7 @@ IntRect RenderSVGText::clippedOverflowRectForRepaint(RenderBoxModelObject* repai
 
 void RenderSVGText::computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed)
 {
+    inflateForShadow(style(), repaintRect);
     SVGRenderBase::computeRectForRepaint(this, repaintContainer, repaintRect, fixed);
 }
 
diff --git a/WebCore/rendering/SVGRenderSupport.cpp b/WebCore/rendering/SVGRenderSupport.cpp
index efc224c..a2b4cdf 100644
--- a/WebCore/rendering/SVGRenderSupport.cpp
+++ b/WebCore/rendering/SVGRenderSupport.cpp
@@ -40,6 +40,8 @@
 #include "TransformationMatrix.h"
 #include <wtf/UnusedParam.h>
 
+using namespace std;
+
 namespace WebCore {
 
 SVGRenderBase::~SVGRenderBase()
@@ -59,6 +61,48 @@ IntRect SVGRenderBase::clippedOverflowRectForRepaint(RenderObject* object, Rende
     return repaintRect;
 }
 
+static void getSVGShadowExtent(ShadowData* shadow, int& top, int& right, int& bottom, int& left)
+{
+    top = 0;
+    right = 0;
+    bottom = 0;
+    left = 0;
+
+    int blurAndSpread = shadow->blur + shadow->spread;
+
+    top = min(top, shadow->y - blurAndSpread);
+    right = max(right, shadow->x + blurAndSpread);
+    bottom = max(bottom, shadow->y + blurAndSpread);
+    left = min(left, shadow->x - blurAndSpread);
+}
+
+void SVGRenderBase::inflateForShadow(RenderStyle* style, IntRect& repaintRect) const
+{
+    ASSERT(style);
+    if (!style)
+        return;
+
+    ShadowData* shadow = style->svgStyle()->shadow();
+    if (!shadow)
+        return;
+
+    int shadowTop;
+    int shadowRight;
+    int shadowBottom;
+    int shadowLeft;
+    getSVGShadowExtent(shadow, shadowTop, shadowRight, shadowBottom, shadowLeft);
+
+    int overflowLeft = repaintRect.x() + shadowLeft;
+    int overflowRight = repaintRect.right() + shadowRight;
+    int overflowTop = repaintRect.y() + shadowTop;
+    int overflowBottom = repaintRect.bottom() + shadowBottom;
+
+    repaintRect.setX(overflowLeft);
+    repaintRect.setY(overflowTop);
+    repaintRect.setWidth(overflowRight - overflowLeft);
+    repaintRect.setHeight(overflowBottom - overflowTop);
+}
+
 void SVGRenderBase::computeRectForRepaint(RenderObject* object, RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed)
 {
     // Translate to coords in our parent renderer, and then call computeRectForRepaint on our parent
diff --git a/WebCore/rendering/SVGRenderSupport.h b/WebCore/rendering/SVGRenderSupport.h
index d1f3e8b..bd067eb 100644
--- a/WebCore/rendering/SVGRenderSupport.h
+++ b/WebCore/rendering/SVGRenderSupport.h
@@ -55,6 +55,9 @@ namespace WebCore {
         FloatRect filterBoundingBoxForRenderer(const RenderObject*) const;
         FloatRect clipperBoundingBoxForRenderer(const RenderObject*) const;
         FloatRect maskerBoundingBoxForRenderer(const RenderObject*) const;
+
+        virtual void inflateForShadow(RenderStyle*, IntRect&) const;
+
     protected:
         static IntRect clippedOverflowRectForRepaint(RenderObject*, RenderBoxModelObject* repaintContainer);
         static void computeRectForRepaint(RenderObject*, RenderBoxModelObject* repaintContainer, IntRect&, bool fixed);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list