RenderSVGText has a hack around RenderBlock's partial repaint code, because it's not (yet) SVG aware. void RenderSVGText::layout() { ASSERT(needsLayout()); // FIXME: This is a hack to avoid the RenderBlock::layout() partial repainting code which is not (yet) SVG aware setNeedsLayout(true); From RenderBlock::layoutBlock: if (!didFullRepaint && repaintTop != repaintBottom) { IntRect repaintRect(m_overflowLeft, repaintTop, m_overflowWidth - m_overflowLeft, repaintBottom - repaintTop); // FIXME: Deal with multiple column repainting. We have to split the repaint // rect up into multiple rects if it spans columns. repaintRect.inflate(maximalOutlineSize(PaintPhaseOutline)); if (hasOverflowClip()) { // Adjust repaint rect for scroll offset int x = repaintRect.x(); int y = repaintRect.y(); layer()->subtractScrollOffset(x, y); repaintRect.setX(x); repaintRect.setY(y); // Don't allow this rect to spill out of our overflow box. repaintRect.intersect(IntRect(0, 0, m_width, m_height)); } RenderView* v = view(); // Make sure the rect is still non-empty after intersecting for overflow above if (!repaintRect.isEmpty() && v && v->frameView()) v->frameView()->addRepaintInfo(this, repaintRect); // We need to do a partial repaint of our content. }
This issue was exposed by bug 14003 and worked around. This bug exists to track fixing the underlying bug by enhancing RenderSVGText to support partial-repaints.
40663 will fix this bug. *** This bug has been marked as a duplicate of bug 40663 ***