Changeset 158934 in webkit
- Timestamp:
- Nov 8, 2013, 11:38:58 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/LayoutTests/ChangeLog ¶
r158932 r158934 1 2013-11-08 Simon Fraser <simon.fraser@apple.com> 2 3 Left sidebar on cubic-bezier.com flickers 4 https://bugs.webkit.org/show_bug.cgi?id=123128 5 6 Reviewed by Dean Jackson. 7 8 Tests with transformed, fixed elements which dump the layer tree to see 9 which layers get composited. 10 11 * compositing/layer-creation/fixed-position-transformed-into-view-expected.txt: Added. 12 * compositing/layer-creation/fixed-position-transformed-into-view.html: Added. 13 * compositing/layer-creation/fixed-position-transformed-outside-view-expected.txt: Added. 14 * compositing/layer-creation/fixed-position-transformed-outside-view.html: Added. 15 1 16 2013-11-08 Oliver Hunt <oliver@apple.com> 2 17 -
TabularUnified trunk/Source/WebCore/ChangeLog ¶
r158931 r158934 1 2013-11-08 Simon Fraser <simon.fraser@apple.com> 2 3 Left sidebar on cubic-bezier.com flickers 4 https://bugs.webkit.org/show_bug.cgi?id=123128 5 6 Reviewed by Dean Jackson. 7 8 The logic that determined whether position:fixed elements outside the viewport 9 should be composited was incorrect if the fixed element also had a transform. 10 11 layer.calculateLayerBounds() only takes into account painted transforms (since they 12 affect layer bounds). So we need to compute the bounds relative to the layer 13 itself, then use localToContainerQuad() to map them to document coordinates, 14 but only to the RenderView so that we don't hit the page scale transform. 15 16 Tests: compositing/layer-creation/fixed-position-transformed-into-view.html 17 compositing/layer-creation/fixed-position-transformed-outside-view.html 18 19 * rendering/RenderLayerCompositor.cpp: 20 (WebCore::RenderLayerCompositor::requiresCompositingForPosition): 21 1 22 2013-11-08 Martin Robinson <mrobinson@igalia.com> 2 23 -
TabularUnified trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp ¶
r158859 r158934 2338 2338 // Fixed position elements that are invisible in the current view don't get their own layer. 2339 2339 LayoutRect viewBounds = m_renderView.frameView().viewportConstrainedVisibleContentRect(); 2340 LayoutRect layerBounds = layer.calculateLayerBounds(& rootRenderLayer(), 0, RenderLayer::DefaultCalculateLayerBoundsFlags2340 LayoutRect layerBounds = layer.calculateLayerBounds(&layer, 0, RenderLayer::UseLocalClipRectIfPossible | RenderLayer::IncludeLayerFilterOutsets | RenderLayer::UseFragmentBoxes 2341 2341 | RenderLayer::ExcludeHiddenDescendants | RenderLayer::DontConstrainForMask | RenderLayer::IncludeCompositedDescendants); 2342 if (!viewBounds.intersects(enclosingIntRect(layerBounds))) { 2342 // Map to m_renderView to ignore page scale. 2343 FloatRect absoluteBounds = layer.renderer().localToContainerQuad(FloatRect(layerBounds), &m_renderView).boundingBox(); 2344 if (!viewBounds.intersects(enclosingIntRect(absoluteBounds))) { 2343 2345 if (viewportConstrainedNotCompositedReason) 2344 2346 *viewportConstrainedNotCompositedReason = RenderLayer::NotCompositedForBoundsOutOfView;
Note:
See TracChangeset
for help on using the changeset viewer.