Bug 1465616 - Remove call to AlignFixedAndStickyLayers for RCD-RSF. r?botond
MozReview-Commit-ID: B8HH6mbjTnv
--- a/gfx/layers/composite/AsyncCompositionManager.cpp
+++ b/gfx/layers/composite/AsyncCompositionManager.cpp
@@ -1063,19 +1063,27 @@ AsyncCompositionManager::ApplyAsyncConte
// effects apply to fixed and sticky layers. We do this by using
// GetTransform() as the base transform rather than GetLocalTransform(),
// which would include those factors.
LayerToParentLayerMatrix4x4 transformWithoutOverscrollOrOmta =
layer->GetTransformTyped()
* CompleteAsyncTransform(
AdjustForClip(asyncTransformWithoutOverscroll, layer));
- AlignFixedAndStickyLayers(layer, layer, metrics.GetScrollId(), oldTransform,
- transformWithoutOverscrollOrOmta, fixedLayerMargins,
- &clipPartsCache);
+ // When applying transformations to the RCD-RSF with zoom-enabled,
+ // avoid re-aligning fixed/sticky layers to make them appear static
+ // relative to the visual viewport.
+ //
+ // This is a partial fix and will require changes to how the async
+ // transform is computed, which will be done in Bug 1465618.
+ if (!metrics.IsRootContent() || !gfxPrefs::APZAllowZooming()) {
+ AlignFixedAndStickyLayers(layer, layer, metrics.GetScrollId(), oldTransform,
+ transformWithoutOverscrollOrOmta, fixedLayerMargins,
+ &clipPartsCache);
+ }
// Combine the local clip with the ancestor scrollframe clip. This is not
// included in the async transform above, since the ancestor clip should not
// move with this APZC.
if (scrollMetadata.HasScrollClip()) {
ParentLayerIntRect clip = scrollMetadata.ScrollClip().GetClipRect();
if (layer->GetParent() && layer->GetParent()->GetTransformIsPerspective()) {
// If our parent layer has a perspective transform, we want to apply