author | Matt Woodrow <mwoodrow@mozilla.com> |
Thu, 29 Mar 2018 23:02:25 +1300 | |
changeset 410713 | fba4de2167c2e96e79d4626ad60230c369d902e0 |
parent 410712 | 130a8f287efe6f34a909090b3386fc72ebf4f358 |
child 410714 | 5dc20e8d5f719b84aeb938e3a77c48fa8e89fb2c |
push id | 33735 |
push user | shindli@mozilla.com |
push date | Fri, 30 Mar 2018 09:55:46 +0000 |
treeherder | mozilla-central@3f37287132bf [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mstange |
bugs | 1448841 |
milestone | 61.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/generic/nsGfxScrollFrame.cpp +++ b/layout/generic/nsGfxScrollFrame.cpp @@ -3003,38 +3003,16 @@ MaxZIndexInList(nsDisplayList* aList, ns { int32_t maxZIndex = -1; for (nsDisplayItem* item = aList->GetBottom(); item; item = item->GetAbove()) { maxZIndex = std::max(maxZIndex, item->ZIndex()); } return maxZIndex; } -// Finds the max z-index of the items in aList that meet the following conditions -// 1) have z-index auto or z-index >= 0. -// 2) aFrame is a proper ancestor of the item's frame. -// Returns -1 if there is no such item. -static int32_t -MaxZIndexInListOfItemsContainedInFrame(nsDisplayList* aList, nsIFrame* aFrame) -{ - int32_t maxZIndex = -1; - for (nsDisplayItem* item = aList->GetBottom(); item; item = item->GetAbove()) { - nsIFrame* itemFrame = item->Frame(); - // Perspective items return the scroll frame as their Frame(), so consider - // their TransformFrame() instead. - if (item->GetType() == DisplayItemType::TYPE_PERSPECTIVE) { - itemFrame = static_cast<nsDisplayPerspective*>(item)->TransformFrame(); - } - if (nsLayoutUtils::IsProperAncestorFrame(aFrame, itemFrame)) { - maxZIndex = std::max(maxZIndex, item->ZIndex()); - } - } - return maxZIndex; -} - template<class T> static void AppendInternalItemToTop(const nsDisplayListSet& aLists, T* aItem, int32_t aZIndex) { if (aZIndex >= 0) { aItem->SetOverrideZIndex(aZIndex); @@ -3705,18 +3683,16 @@ ScrollFrameHelper::BuildDisplayList(nsDi if (mWillBuildScrollableLayer && aBuilder->IsPaintingToWindow()) { aBuilder->ForceLayerForScrollParent(); } if (couldBuildLayer) { // Make sure that APZ will dispatch events back to content so we can create // a displayport for this frame. We'll add the item later on. if (!mWillBuildScrollableLayer) { - int32_t zIndex = - MaxZIndexInListOfItemsContainedInFrame(scrolledContent.PositionedDescendants(), mOuter); if (aBuilder->BuildCompositorHitTestInfo()) { CompositorHitTestInfo info = CompositorHitTestInfo::eVisibleToHitTest | CompositorHitTestInfo::eDispatchToContent; // If the scroll frame has non-default overscroll-behavior, instruct // APZ to require a target confirmation before processing events that // hit this scroll frame (that is, to drop the events if a confirmation // does not arrive within the timeout period). Otherwise, APZ's // fallback behaviour of scrolling the enclosing scroll frame would @@ -3724,23 +3700,23 @@ ScrollFrameHelper::BuildDisplayList(nsDi ScrollbarStyles scrollbarStyles = GetScrollbarStylesFromFrame(); if (scrollbarStyles.mOverscrollBehaviorX != StyleOverscrollBehavior::Auto || scrollbarStyles.mOverscrollBehaviorY != StyleOverscrollBehavior::Auto) { info |= CompositorHitTestInfo::eRequiresTargetConfirmation; } nsDisplayCompositorHitTestInfo* hitInfo = MakeDisplayItem<nsDisplayCompositorHitTestInfo>(aBuilder, mScrolledFrame, info, 1, Some(mScrollPort + aBuilder->ToReferenceFrame(mOuter))); - AppendInternalItemToTop(scrolledContent, hitInfo, zIndex); + AppendInternalItemToTop(scrolledContent, hitInfo, INT32_MAX); } if (aBuilder->IsBuildingLayerEventRegions()) { nsDisplayLayerEventRegions* inactiveRegionItem = MakeDisplayItem<nsDisplayLayerEventRegions>(aBuilder, mScrolledFrame, 1); inactiveRegionItem->AddInactiveScrollPort(mScrolledFrame, mScrollPort + aBuilder->ToReferenceFrame(mOuter)); - AppendInternalItemToTop(scrolledContent, inactiveRegionItem, zIndex); + AppendInternalItemToTop(scrolledContent, inactiveRegionItem, INT32_MAX); } } if (aBuilder->ShouldBuildScrollInfoItemsForHoisting()) { aBuilder->AppendNewScrollInfoItemForHoisting( MakeDisplayItem<nsDisplayScrollInfoLayer>(aBuilder, mScrolledFrame, mOuter)); }