Summary: | Setting -webkit-filter: in :active selector causes failure to redraw | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Jer Noble <jer.noble> | ||||||||
Component: | Layout and Rendering | Assignee: | Simon Fraser (smfr) <simon.fraser> | ||||||||
Status: | RESOLVED FIXED | ||||||||||
Severity: | Normal | CC: | commit-queue, dino, esprehn+autocc, glenn, kondapallykalyan, krit, simon.fraser, thorton | ||||||||
Priority: | P2 | ||||||||||
Version: | 528+ (Nightly build) | ||||||||||
Hardware: | Unspecified | ||||||||||
OS: | Unspecified | ||||||||||
Attachments: |
|
Bisecting shows this occurs as early as http://trac.webkit.org/r122636, and probably earlier. There is something about being an inline with a filter, which gives you a RenderLayer and, in the test, a compositing layer, and then the filter is removed and the RenderLayer goes away and your enclosing compositing layer doesn't repaint the correct area. So, in short, this will not be common. Created attachment 209310 [details]
Simpler test
Ah, we need to do what we do when opacity goes from non-1 to 1 or v.v., which is return true from RenderStyle::changeRequiresLayout(). Created attachment 209314 [details]
Patch
Comment on attachment 209314 [details]
Patch
r=me. Nice simple fix.
|
Created attachment 209300 [details] Reduced test case In the attached test case, clicking on the text will add a -webkit-filter to the active element. Releasing the mouse will remove that filter, but the text will not (always) redraw. It is important that the text is inside a composited parent, which is a sibling of a composited element.