Summary: | [Transforms] Modifying transform values on relatively positioned elements fails to redraw | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | David Beck <davbeck> | ||||||||||||
Component: | CSS | Assignee: | Simon Fraser (smfr) <simon.fraser> | ||||||||||||
Status: | RESOLVED FIXED | ||||||||||||||
Severity: | Normal | CC: | mitz, simon.fraser | ||||||||||||
Priority: | P2 | ||||||||||||||
Version: | 528+ (Nightly build) | ||||||||||||||
Hardware: | Mac (Intel) | ||||||||||||||
OS: | OS X 10.5 | ||||||||||||||
Bug Depends on: | 21942 | ||||||||||||||
Bug Blocks: | |||||||||||||||
Attachments: |
|
Description
David Beck
2008-03-13 21:47:53 PDT
Created attachment 19755 [details]
Example page
Example of when the failure occurs
Created attachment 25084 [details]
Simpler testcase
Created attachment 25088 [details]
Testcase to exercise the offsetForPositionedInContainer() code path
Created attachment 25089 [details]
Patch
In RenderBox::computeAbsoluteRepaintRect(), the transform block clobbered topLeft after it had been adjusted for relative positioning, and for the offsetForPositionedInContainer().
The patch moves the topLeft adjustments until after the transform has been applied.
Created attachment 25090 [details]
Followup patch to tidy up RenderBox::computeAbsoluteRepaintRect()
This is a follow-up patch that clean up RenderBox::computeAbsoluteRepaintRect():
* Do early return of container() is null
* if/else on style()->position()
* Make use of layer()->scrolledContentOffset()
Comment on attachment 25089 [details]
Patch
r=me
Comment on attachment 25090 [details]
Followup patch to tidy up RenderBox::computeAbsoluteRepaintRect()
r=me
First patch: Committed r38338 M WebCore/rendering/RenderBox.cpp M WebCore/ChangeLog A LayoutTests/platform/mac/fast/repaint/transform-relative-position-expected.txt A LayoutTests/platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.checksum A LayoutTests/platform/mac/fast/repaint/transform-relative-position-expected.checksum A LayoutTests/platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.png A LayoutTests/platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.txt A LayoutTests/platform/mac/fast/repaint/transform-relative-position-expected.png M LayoutTests/ChangeLog A LayoutTests/fast/repaint/transform-relative-position.html A LayoutTests/fast/repaint/transform-absolute-in-positioned-container.html r38338 = 71b2cc0a2f9a6d581a875f1c054e89e4e66a1d8c (trunk) I fixed the tests to be real repaint tests. |