https://bugs.webkit.org/show_bug.cgi?id=86158
authorbdakin@apple.com <bdakin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 May 2012 00:31:30 +0000 (00:31 +0000)
committerbdakin@apple.com <bdakin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 May 2012 00:31:30 +0000 (00:31 +0000)
commitc540e09b24e893f7aa9931d12fc0ed0f87775f45
treee84351aa949ea5179ddf533a8b14362ad25bd4b0
parent8a140cfd4bae87dae741867e8c73f8b2750ad66f
https://bugs.webkit.org/show_bug.cgi?id=86158
Overlay scrollbars without layers never paint in overflow regions in
tiled drawing mode
-and corresponding-
<rdar://problem/11289546>

Reviewed by Darin Adler.

RenderLayers paint scrollbars that do not have their own layers by
running a second pass through the layer tree after the layer tree has
painted. This ensures that the scrollbars always paint on top of
content. However, this mechanism was relying on
FrameView::paintContents() as a choke-point for all painting to
trigger the second painting pass. That is not a reasonable choke-point
in tiled drawing, so this patch adds similar code to
RenderLayerBacking.

Only opt into the second painting pass for scrollbars that do not have
their own layers.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintOverflowControls):

A layer that paints into its backing cannot return early here if it
has overlay scrollbars to paint.
(WebCore::RenderLayer::paintLayer):

This replicates code in FrameView::paintContents(). After painting the
owning layer, do a second pass if there are overlay scrollbars to
paint.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@116711 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/rendering/RenderLayerBacking.cpp