[Webkit-unassigned] [Bug 93703] New: fast/repaint/float-in-new-block-with-layout-delta.html is overpainting
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Aug 10 02:30:50 PDT 2012
https://bugs.webkit.org/show_bug.cgi?id=93703
Summary: fast/repaint/float-in-new-block-with-layout-delta.html
is overpainting
Product: WebKit
Version: 528+ (Nightly build)
Platform: Unspecified
OS/Version: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: Layout and Rendering
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: eric at webkit.org
CC: mitz at webkit.org, simon.fraser at apple.com
fast/repaint/float-in-new-block-with-layout-delta.html is overpainting
Looking at the expected image:
http://trac.webkit.org/browser/trunk/LayoutTests/platform/mac/fast/repaint/float-in-new-block-with-layout-delta-expected.png
Notice how we repaint 100x200 instead of 100x100 (which is actually all we need).
The "overpaint" is caused by:
RenderBlock::repaintDirtyFloats
which is called at the last line of:
RenderBlock::layoutRunsAndFloats
and repaints the float inside the div which is of course still at 0,0.
The problem appears to be the layoutDelta in:
LayoutRect RenderBox::clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer) const
{
if (style()->visibility() != VISIBLE && !enclosingLayer()->hasVisibleContent())
return LayoutRect();
LayoutRect r = visualOverflowRect();
RenderView* v = view();
if (v) {
// FIXME: layoutDelta needs to be applied in parts before/after transforms and
// repaint containers. https://bugs.webkit.org/show_bug.cgi?id=23308
r.move(v->layoutDelta());
}
Which at time of repaint is 0, -118, which adjusts the rect from the repaint() call back to 0.
It seems that the repaintDirtyFloats call is attempting to repaint the *new* location of the float, not the *old* location, but maybe I"m misunderstanding.
I'll have to look again to understand why we're actually invalidating the new location, although initial testing of my patch on bug 92800, may suggest that our invalidation of the new location is wrong, as bug 92800 disables it (possibly incorrectly).
The first issue is for me to understand what the purpose of RenderBlock::repaintDirtyFloats at the end of RenderBlock::layoutRunsAndFloats is.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list