[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.18-1-697-g2f78b87
bdakin at apple.com
bdakin at apple.com
Wed Jan 20 22:17:56 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit 47394a0190aaf58d42187fd3a446015dfcffed8d
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