RESOLVED FIXED 23307
[Transforms] Repaint issue with relative position and transform
https://bugs.webkit.org/show_bug.cgi?id=23307
Summary [Transforms] Repaint issue with relative position and transform
Simon Fraser (smfr)
Reported 2009-01-13 16:33:01 PST
The attached testcase shows a problem repainting a relatively positioned element with a transform when innerText changes.
Attachments
Testcase (762 bytes, text/html)
2009-01-13 16:33 PST, Simon Fraser (smfr)
no flags
Another testcase -- same issue? (774 bytes, text/html)
2009-01-13 16:34 PST, Simon Fraser (smfr)
no flags
Patch, testcase, changelog (5.19 KB, patch)
2009-04-02 22:32 PDT, Simon Fraser (smfr)
mitz: review+
Simon Fraser (smfr)
Comment 1 2009-01-13 16:33:18 PST
Created attachment 26688 [details] Testcase
Simon Fraser (smfr)
Comment 2 2009-01-13 16:34:07 PST
Created attachment 26689 [details] Another testcase -- same issue?
Simon Fraser (smfr)
Comment 3 2009-03-26 21:29:07 PDT
This is a LayoutState issue. Towards the end of RenderBlock::layoutBlock(), after we've popped the layout state, we're doing a repaintRectangle(). The current element has a transform, so we'd normally have disabled the layout state, but we after the pop, so we think it's ok to use the LayoutState in the repaint.
Simon Fraser (smfr)
Comment 4 2009-03-26 22:29:16 PDT
This seems to be an issue with LayoutState and transforms. This change fixes it but maybe we can do something more subtle. diff --git a/WebCore/rendering/RenderObject.cpp b/WebCore/rendering/RenderObject.cpp index 48d6d57..3e7b2de 100644 --- a/WebCore/rendering/RenderObject.cpp +++ b/WebCore/rendering/RenderObject.cpp @@ -1170,7 +1170,15 @@ void RenderObject::repaintRectangle(const IntRect& r, bool immediate) dirtyRect.move(view->layoutDelta()); RenderBoxModelObject* repaintContainer = containerForRepaint(); + + if (hasTransform()) + view->disableLayoutState(); + computeRectForRepaint(repaintContainer, dirtyRect); + + if (hasTransform()) + view->enableLayoutState(); + repaintUsingContainer(repaintContainer ? repaintContainer : view, dirtyRect, immediate); }
Simon Fraser (smfr)
Comment 5 2009-04-02 22:32:00 PDT
Created attachment 29219 [details] Patch, testcase, changelog This patch fixes both testcases in this bug.
Simon Fraser (smfr)
Comment 6 2009-04-02 22:40:18 PDT
Note You need to log in before you can comment on or make changes to this bug.