WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
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
Details
Another testcase -- same issue?
(774 bytes, text/html)
2009-01-13 16:34 PST
,
Simon Fraser (smfr)
no flags
Details
Patch, testcase, changelog
(5.19 KB, patch)
2009-04-02 22:32 PDT
,
Simon Fraser (smfr)
mitz: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
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
http://trac.webkit.org/changeset/42197
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug