From 967717af5423377c967781471ee106e2bb4e11c8 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Thu, 22 Jul 2010 15:37:06 +0100 Subject: Merge WebKit at r63859 : Initial merge by git. Change-Id: Ie8096c63ec7c991c9a9cba8bdd9c3b74a3b8ed62 --- WebCore/rendering/RenderForeignObject.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'WebCore/rendering/RenderForeignObject.cpp') diff --git a/WebCore/rendering/RenderForeignObject.cpp b/WebCore/rendering/RenderForeignObject.cpp index 4b94bab..8b84f97 100644 --- a/WebCore/rendering/RenderForeignObject.cpp +++ b/WebCore/rendering/RenderForeignObject.cpp @@ -26,6 +26,7 @@ #include "RenderForeignObject.h" #include "GraphicsContext.h" +#include "RenderSVGResource.h" #include "RenderView.h" #include "SVGForeignObjectElement.h" #include "SVGRenderSupport.h" @@ -98,7 +99,7 @@ void RenderForeignObject::layout() ASSERT(needsLayout()); ASSERT(!view()->layoutStateEnabled()); // RenderSVGRoot disables layoutState for the SVG rendering tree. - LayoutRepainter repainter(*this, checkForRepaintDuringLayout()); + LayoutRepainter repainter(*this, m_everHadLayout && checkForRepaintDuringLayout()); SVGForeignObjectElement* foreign = static_cast(node()); if (m_needsTransformUpdate) { @@ -118,6 +119,10 @@ void RenderForeignObject::layout() setLocation(roundedIntPoint(viewportLocation)); RenderBlock::layout(); + // Invalidate all resources of this client, if we changed something. + if (m_everHadLayout && selfNeedsLayout()) + RenderSVGResource::invalidateAllResourcesOfRenderer(this); + repainter.repaintAfterLayout(); setNeedsLayout(false); } -- cgit v1.1