Summary: | REGRESSION (r116203): overflow sections don’t have scrollbars | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | mitz | ||||||||
Component: | Layout and Rendering | Assignee: | Julien Chaffraix <jchaffraix> | ||||||||
Status: | RESOLVED FIXED | ||||||||||
Severity: | Major | CC: | adele, bdakin, darin, eric, jchaffraix, simon.fraser, webkit.review.bot | ||||||||
Priority: | P1 | Keywords: | InRadar, Regression | ||||||||
Version: | 528+ (Nightly build) | ||||||||||
Hardware: | Mac | ||||||||||
OS: | OS X 10.7 | ||||||||||
URL: | data:text/html,<div style="border: solid; height: 100px; overflow: auto;">a<div style="height: 300px;"></div>z</div> | ||||||||||
Attachments: |
|
Description
mitz
2012-06-27 00:16:10 PDT
(In reply to comment #0) > This was caused by <http://trac.webkit.org/r116203>. …which was the fix for bug 85678. Resize corners (for resize: both) also don’t paint sometimes. Should we roll out r116203 and re-assess the optimization? Yes. (In reply to comment #3) > Should we roll out r116203 and re-assess the optimization? If it is rolled out, the has self-painting layer descendant optimization should be rolled out as well due to the same issue. The fix should be fairly simple though: the current definition of self-painting layer doesn't seem to cover all the cases (scrollbars, resizing, ...). I will see if I can get something by EOD, if not, it's better to roll it out as I won't be able to look into it before some time. (In reply to comment #5) > (In reply to comment #3) > > Should we roll out r116203 and re-assess the optimization? > > If it is rolled out, the has self-painting layer descendant optimization should be rolled out as well due to the same issue. > > The fix should be fairly simple though: the current definition of self-painting layer doesn't seem to cover all the cases (scrollbars, resizing, ...). I will see if I can get something by EOD, if not, it's better to roll it out as I won't be able to look into it before some time. Scratch that comment, I spoke too early. I couldn't reproduce the issue on Mac SL or Linux Chomium so it should be related to overlay scrollbars. The bad news is that I have no Lion machine to test but I think I have a blind fix for that that I will post. Created attachment 149953 [details]
Proposed blind fix, would appreciate if someone could test it on Lion.
Comment on attachment 149953 [details]
Proposed blind fix, would appreciate if someone could test it on Lion.
With the patch applied, I hit ASSERTION FAILED: isSelfPaintingLayer() || hasSelfPaintingLayerDescendant() in RenderLayer.cpp:2995 as soon as I open the test case or cause a <textarea> to have a scroll bar.
(In reply to comment #8) > (From update of attachment 149953 [details]) > With the patch applied, I hit ASSERTION FAILED: isSelfPaintingLayer() || hasSelfPaintingLayerDescendant() in RenderLayer.cpp:2995 as soon as I open the test case or cause a <textarea> to have a scroll bar. That's because I forgot to update this ASSERT. I got my hand on a Lion machine and unfortunately the test case seemed to work fine (both ToT and a nightly build). Is there some special option that I need to enable to see the issue? (In reply to comment #9) > (In reply to comment #8) > > (From update of attachment 149953 [details] [details]) > > With the patch applied, I hit ASSERTION FAILED: isSelfPaintingLayer() || hasSelfPaintingLayerDescendant() in RenderLayer.cpp:2995 as soon as I open the test case or cause a <textarea> to have a scroll bar. > > That's because I forgot to update this ASSERT. I got my hand on a Lion machine and unfortunately the test case seemed to work fine (both ToT and a nightly build). Is there some special option that I need to enable to see the issue? You need to have overlay scrollbars enabled. In System Preferences > General, select “Show scrollbars: When scrolling”. Comment on attachment 149953 [details] Proposed blind fix, would appreciate if someone could test it on Lion. > You need to have overlay scrollbars enabled. In System Preferences > General, select “Show scrollbars: When scrolling”. Terrific Dan, that did the trick! I have understood the regression and will upload a fix shortly. Created attachment 151569 [details]
Proposed fix 1: Make RenderLayer with overlay scrollbars self-painting.
Comment on attachment 151569 [details]
Proposed fix 1: Make RenderLayer with overlay scrollbars self-painting.
Why is this specific to overlay scrollbars?
(In reply to comment #13) > (From update of attachment 151569 [details]) > Why is this specific to overlay scrollbars? Non-overlay scrollbars are painted by their renderer as part of the regular paint() code path (see RenderBlock::paint). Overlay scrollbars are treated differently and painted in a follow-up phase in FrameView::paintContents. The RenderLayer code also has this distinction: we don't call paintOverflowControl in paintLayer if we don't have overlay scrollbars. Comment on attachment 151569 [details] Proposed fix 1: Make RenderLayer with overlay scrollbars self-painting. View in context: https://bugs.webkit.org/attachment.cgi?id=151569&action=review > Source/WebCore/ChangeLog:11 > + After r120395 (follow-up of r116203), we ignore subtree that have no self-painting layers for subtrees (plural)? Comment on attachment 151569 [details] Proposed fix 1: Make RenderLayer with overlay scrollbars self-painting. View in context: https://bugs.webkit.org/attachment.cgi?id=151569&action=review >> Source/WebCore/ChangeLog:11 >> + After r120395 (follow-up of r116203), we ignore subtree that have no self-painting layers for > > subtrees (plural)? You are right, we may skip several subtrees. Created attachment 151716 [details]
Patch for landing
Comment on attachment 151716 [details] Patch for landing Clearing flags on attachment: 151716 Committed r122342: <http://trac.webkit.org/changeset/122342> All reviewed patches have been landed. Closing bug. |