Bug 22212

Summary: [Transforms] redrawing turds when transforming element with abs. pos child
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: Layout and RenderingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: hyatt
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Mac   
OS: OS X 10.5   
Attachments:
Description Flags
Testcase
none
Patch, testcase, changelog mitz: review+

Description Simon Fraser (smfr) 2008-11-12 12:40:30 PST
The testcase shows a redraw issue when transforming something with an absolute position child.
Comment 1 Simon Fraser (smfr) 2008-11-12 12:40:48 PST
Created attachment 25101 [details]
Testcase
Comment 2 Simon Fraser (smfr) 2008-11-12 15:21:48 PST
The issue here is that RenderObject::repaintAfterLayoutIfNeeded() falls into the "just redraw the deltas" codepath when redrawing the abs. positioned gray bar.
Comment 3 Simon Fraser (smfr) 2008-11-12 17:22:12 PST
Created attachment 25109 [details]
Patch, testcase, changelog
Comment 4 mitz 2008-11-12 17:27:10 PST
Comment on attachment 25109 [details]
Patch, testcase, changelog

> +     #box {
> +        position: relative;
> +         margin: 50px;
> +         width: 200px;
> +         height: 200px;
> +         border: 2px solid black;
> +         -webkit-transform: rotate(0deg);
> +
> +     }

Tiny indentation problem here.

> +        Finally, fix a bug in RenderBox::localToAbsoluteQuad() which was getting
> +        borderTopExtra() from the object, rather than its container (as localToAbsolute()
> +        does).

Do you have a test for this?

r=me
Comment 5 Simon Fraser (smfr) 2008-11-12 17:31:11 PST
> Do you have a test for this?

It was exposed by LayoutTests/fast/dynamic/subtree-table-cell-height.html, so is covered.
Comment 6 Simon Fraser (smfr) 2008-11-12 17:32:25 PST
Committed r38353
	M	WebCore/rendering/RenderFlexibleBox.cpp
	M	WebCore/rendering/RenderObject.cpp
	M	WebCore/rendering/RenderSVGContainer.cpp
	M	WebCore/rendering/RenderSVGViewportContainer.cpp
	M	WebCore/rendering/RenderObject.h
	M	WebCore/rendering/RenderLayer.cpp
	M	WebCore/rendering/RenderForeignObject.cpp
	M	WebCore/rendering/RenderPath.cpp
	M	WebCore/rendering/RenderBox.cpp
	M	WebCore/rendering/RenderBlock.cpp
	M	WebCore/rendering/RenderTable.cpp
	M	WebCore/rendering/RenderSVGImage.cpp
	M	WebCore/rendering/RenderSVGText.cpp
	M	WebCore/rendering/RenderReplaced.cpp
	M	WebCore/rendering/RenderSVGRoot.cpp
	M	WebCore/ChangeLog
	A	LayoutTests/platform/mac/fast/repaint/transform-absolute-child-expected.png
	A	LayoutTests/platform/mac/fast/repaint/transform-absolute-child-expected.txt
	A	LayoutTests/platform/mac/fast/repaint/transform-absolute-child-expected.checksum
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/repaint/transform-absolute-child.html
r38353 = d12c84b463bdb934ab22f7931948b30951f4e310 (trunk)