summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/RenderForeignObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/rendering/RenderForeignObject.cpp')
-rw-r--r--WebCore/rendering/RenderForeignObject.cpp7
1 files changed, 6 insertions, 1 deletions
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<SVGForeignObjectElement*>(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);
}