Bug 15386
Summary: | RenderSVGText can't do partial repaints | ||
---|---|---|---|
Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> |
Component: | SVG | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | Normal | CC: | zimmermann |
Priority: | P2 | ||
Version: | 523.x (Safari 3) | ||
Hardware: | Mac | ||
OS: | OS X 10.4 |
Eric Seidel (no email)
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.
}
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Eric Seidel (no email)
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.
Nikolas Zimmermann
40663 will fix this bug.
*** This bug has been marked as a duplicate of bug 40663 ***