mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
Bug 1453469 - Remove nsDisplayOwnLayer::mScrollTarget. r=botond
MozReview-Commit-ID: 1LAWH96mm5m --HG-- extra : rebase_source : fe2bf1d16dc1921057f718cd5f7dd00b11e566c5 extra : amend_source : 53a8a2c0cd03b94002ba0600859e6c18d3a466b6
This commit is contained in:
parent
e4878be59c
commit
aa51622886
@ -33,7 +33,8 @@ struct ScrollbarData {
|
||||
CSSCoord aThumbLength,
|
||||
bool aThumbIsAsyncDraggable,
|
||||
CSSCoord aScrollTrackStart,
|
||||
CSSCoord aScrollTrackLength)
|
||||
CSSCoord aScrollTrackLength,
|
||||
uint64_t aTargetViewId)
|
||||
: mDirection(Some(aDirection))
|
||||
, mScrollbarLayerType(aScrollbarLayerType)
|
||||
, mThumbRatio(aThumbRatio)
|
||||
@ -42,6 +43,7 @@ struct ScrollbarData {
|
||||
, mThumbIsAsyncDraggable(aThumbIsAsyncDraggable)
|
||||
, mScrollTrackStart(aScrollTrackStart)
|
||||
, mScrollTrackLength(aScrollTrackLength)
|
||||
, mTargetViewId(aTargetViewId)
|
||||
{}
|
||||
|
||||
/**
|
||||
@ -158,20 +160,6 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SetScrollbarContainer(FrameMetrics::ViewID aTargetViewId,
|
||||
ScrollDirection aDirection) {
|
||||
if (mScrollbarData.mScrollbarLayerType == ScrollbarLayerType::Container &&
|
||||
mScrollbarData.mDirection &&
|
||||
*mScrollbarData.mDirection == aDirection &&
|
||||
mScrollbarData.mTargetViewId == aTargetViewId) {
|
||||
return false;
|
||||
}
|
||||
mScrollbarData.mDirection = Some(aDirection);
|
||||
mScrollbarData.mTargetViewId = aTargetViewId;
|
||||
mScrollbarData.mScrollbarLayerType = ScrollbarLayerType::Container;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SetMixBlendMode(gfx::CompositionOp aMixBlendMode) {
|
||||
if (mMixBlendMode == aMixBlendMode) {
|
||||
return false;
|
||||
|
@ -1259,9 +1259,9 @@ public:
|
||||
|
||||
/**
|
||||
* CONSTRUCTION PHASE ONLY
|
||||
* If a layer is a scroll thumb container layer, set the scroll identifier
|
||||
* of the scroll frame scrolled by the thumb, and other data related to the
|
||||
* thumb.
|
||||
* If a layer is a scroll thumb container layer or a scrollbar container
|
||||
* layer, set the scroll identifier of the scroll frame scrolled by
|
||||
* the scrollbar, and other data related to the scrollbar.
|
||||
*/
|
||||
void SetScrollbarData(const ScrollbarData& aThumbData)
|
||||
{
|
||||
@ -1271,17 +1271,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Set during construction for the container layer of scrollbar components.
|
||||
// |aScrollId| holds the scroll identifier of the scrollable content that
|
||||
// the scrollbar is for.
|
||||
void SetScrollbarContainer(FrameMetrics::ViewID aScrollId,
|
||||
ScrollDirection aDirection)
|
||||
{
|
||||
if (mSimpleAttrs.SetScrollbarContainer(aScrollId, aDirection)) {
|
||||
MutatedSimple();
|
||||
}
|
||||
}
|
||||
|
||||
// Used when forwarding transactions. Do not use at any other time.
|
||||
void SetSimpleAttributes(const SimpleLayerAttributes& aAttrs) {
|
||||
mSimpleAttrs = aAttrs;
|
||||
|
@ -3382,7 +3382,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
||||
MakeDisplayItem<nsDisplayOwnLayer>(aBuilder, this, &resultList,
|
||||
aBuilder->CurrentActiveScrolledRoot(),
|
||||
nsDisplayOwnLayerFlags::eNone,
|
||||
mozilla::layers::FrameMetrics::NULL_SCROLL_ID,
|
||||
ScrollbarData{}, /* aForceActive = */ false));
|
||||
if (aCreatedContainerItem) {
|
||||
*aCreatedContainerItem = true;
|
||||
|
@ -3042,21 +3042,21 @@ AppendToTop(nsDisplayListBuilder* aBuilder, const nsDisplayListSet& aLists,
|
||||
nsDisplayWrapList* newItem;
|
||||
const ActiveScrolledRoot* asr = aBuilder->CurrentActiveScrolledRoot();
|
||||
if (aFlags & APPEND_OWN_LAYER) {
|
||||
FrameMetrics::ViewID scrollTarget = FrameMetrics::NULL_SCROLL_ID;
|
||||
nsDisplayOwnLayerFlags flags = aBuilder->GetCurrentScrollbarFlags();
|
||||
// The flags here should be at most one scrollbar direction and nothing else
|
||||
MOZ_ASSERT(flags == nsDisplayOwnLayerFlags::eNone ||
|
||||
flags == nsDisplayOwnLayerFlags::eVerticalScrollbar ||
|
||||
flags == nsDisplayOwnLayerFlags::eHorizontalScrollbar);
|
||||
|
||||
ScrollbarData scrollbarData;
|
||||
if (aFlags & APPEND_SCROLLBAR_CONTAINER) {
|
||||
scrollTarget = aBuilder->GetCurrentScrollbarTarget();
|
||||
scrollbarData.mTargetViewId = aBuilder->GetCurrentScrollbarTarget();
|
||||
// The flags here should be exactly one scrollbar direction
|
||||
MOZ_ASSERT(flags != nsDisplayOwnLayerFlags::eNone);
|
||||
flags |= nsDisplayOwnLayerFlags::eScrollbarContainer;
|
||||
}
|
||||
|
||||
newItem = MakeDisplayItem<nsDisplayOwnLayer>(aBuilder, aSourceFrame, aSource, asr, flags, scrollTarget);
|
||||
newItem = MakeDisplayItem<nsDisplayOwnLayer>(aBuilder, aSourceFrame, aSource, asr, flags, scrollbarData);
|
||||
} else {
|
||||
newItem = MakeDisplayItem<nsDisplayWrapList>(aBuilder, aSourceFrame, aSource, asr);
|
||||
}
|
||||
|
@ -6922,14 +6922,13 @@ nsDisplayTableBlendContainer::CreateForBackgroundBlendMode(nsDisplayListBuilder*
|
||||
nsDisplayOwnLayer::nsDisplayOwnLayer(nsDisplayListBuilder* aBuilder,
|
||||
nsIFrame* aFrame, nsDisplayList* aList,
|
||||
const ActiveScrolledRoot* aActiveScrolledRoot,
|
||||
nsDisplayOwnLayerFlags aFlags, ViewID aScrollTarget,
|
||||
const ScrollbarData& aThumbData,
|
||||
nsDisplayOwnLayerFlags aFlags,
|
||||
const ScrollbarData& aScrollbarData,
|
||||
bool aForceActive,
|
||||
bool aClearClipChain)
|
||||
: nsDisplayWrapList(aBuilder, aFrame, aList, aActiveScrolledRoot, aClearClipChain)
|
||||
, mFlags(aFlags)
|
||||
, mScrollTarget(aScrollTarget)
|
||||
, mThumbData(aThumbData)
|
||||
, mScrollbarData(aScrollbarData)
|
||||
, mForceActive(aForceActive)
|
||||
, mWrAnimationId(0)
|
||||
{
|
||||
@ -6965,7 +6964,7 @@ nsDisplayOwnLayer::GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
bool
|
||||
nsDisplayOwnLayer::IsScrollThumbLayer() const
|
||||
{
|
||||
return mThumbData.mScrollbarLayerType == layers::ScrollbarLayerType::Thumb;
|
||||
return mScrollbarData.mScrollbarLayerType == layers::ScrollbarLayerType::Thumb;
|
||||
}
|
||||
|
||||
bool
|
||||
@ -6986,15 +6985,16 @@ nsDisplayOwnLayer::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
BuildContainerLayerFor(aBuilder, aManager, mFrame, this, &mList,
|
||||
aContainerParameters, nullptr,
|
||||
FrameLayerBuilder::CONTAINER_ALLOW_PULL_BACKGROUND_COLOR);
|
||||
|
||||
if (IsScrollThumbLayer()) {
|
||||
mThumbData.mTargetViewId = mScrollTarget;
|
||||
layer->SetScrollbarData(mThumbData);
|
||||
}
|
||||
if (mFlags & nsDisplayOwnLayerFlags::eScrollbarContainer) {
|
||||
ScrollDirection dir = (mFlags & nsDisplayOwnLayerFlags::eVerticalScrollbar)
|
||||
? ScrollDirection::eVertical
|
||||
: ScrollDirection::eHorizontal;
|
||||
layer->SetScrollbarContainer(mScrollTarget, dir);
|
||||
layer->SetScrollbarData(mScrollbarData);
|
||||
} else if (mFlags & nsDisplayOwnLayerFlags::eScrollbarContainer) {
|
||||
mScrollbarData.mScrollbarLayerType = ScrollbarLayerType::Container;
|
||||
mScrollbarData.mDirection = (mFlags & nsDisplayOwnLayerFlags::eVerticalScrollbar)
|
||||
? Some(ScrollDirection::eVertical)
|
||||
: Some(ScrollDirection::eHorizontal);
|
||||
|
||||
layer->SetScrollbarData(mScrollbarData);
|
||||
}
|
||||
|
||||
if (mFlags & nsDisplayOwnLayerFlags::eGenerateSubdocInvalidations) {
|
||||
@ -7044,9 +7044,9 @@ nsDisplayOwnLayer::UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
|
||||
if (IsScrollThumbLayer()) {
|
||||
ret = true;
|
||||
if (aLayerData) {
|
||||
aLayerData->SetScrollbarData(mThumbData);
|
||||
aLayerData->SetScrollbarData(mScrollbarData);
|
||||
aLayerData->SetScrollbarAnimationId(mWrAnimationId);
|
||||
aLayerData->SetScrollbarTargetContainerId(mScrollTarget);
|
||||
aLayerData->SetScrollbarTargetContainerId(mScrollbarData.mTargetViewId);
|
||||
}
|
||||
}
|
||||
if (mFlags & nsDisplayOwnLayerFlags::eScrollbarContainer) {
|
||||
@ -7056,7 +7056,7 @@ nsDisplayOwnLayer::UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
|
||||
? ScrollDirection::eVertical
|
||||
: ScrollDirection::eHorizontal;
|
||||
aLayerData->SetScrollbarContainerDirection(dir);
|
||||
aLayerData->SetScrollbarTargetContainerId(mScrollTarget);
|
||||
aLayerData->SetScrollbarTargetContainerId(mScrollbarData.mTargetViewId);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@ -7065,7 +7065,7 @@ nsDisplayOwnLayer::UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
|
||||
void
|
||||
nsDisplayOwnLayer::WriteDebugInfo(std::stringstream& aStream)
|
||||
{
|
||||
aStream << nsPrintfCString(" (flags 0x%x) (scrolltarget %" PRIu64 ")", (int)mFlags, mScrollTarget).get();
|
||||
aStream << nsPrintfCString(" (flags 0x%x) (scrolltarget %" PRIu64 ")", (int)mFlags, mScrollbarData.mTargetViewId).get();
|
||||
}
|
||||
|
||||
nsDisplaySubDocument::nsDisplaySubDocument(nsDisplayListBuilder* aBuilder,
|
||||
|
@ -5600,18 +5600,18 @@ public:
|
||||
nsDisplayList* aList,
|
||||
const ActiveScrolledRoot* aActiveScrolledRoot,
|
||||
nsDisplayOwnLayerFlags aFlags = nsDisplayOwnLayerFlags::eNone,
|
||||
ViewID aScrollTarget = mozilla::layers::FrameMetrics::NULL_SCROLL_ID,
|
||||
const ScrollbarData& aThumbData = ScrollbarData{},
|
||||
const ScrollbarData& aScrollbarData = ScrollbarData{},
|
||||
bool aForceActive = true,
|
||||
bool aClearClipChain = false);
|
||||
|
||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
virtual ~nsDisplayOwnLayer();
|
||||
#endif
|
||||
|
||||
nsDisplayOwnLayer(nsDisplayListBuilder* aBuilder, const nsDisplayOwnLayer& aOther)
|
||||
: nsDisplayWrapList(aBuilder, aOther)
|
||||
, mFlags(aOther.mFlags)
|
||||
, mScrollTarget(aOther.mScrollTarget)
|
||||
, mThumbData(aOther.mThumbData)
|
||||
, mScrollbarData(aOther.mScrollbarData)
|
||||
, mForceActive(aOther.mForceActive)
|
||||
, mWrAnimationId(aOther.mWrAnimationId)
|
||||
{
|
||||
@ -5651,12 +5651,15 @@ public:
|
||||
NS_DISPLAY_DECL_NAME("OwnLayer", TYPE_OWN_LAYER)
|
||||
protected:
|
||||
nsDisplayOwnLayerFlags mFlags;
|
||||
ViewID mScrollTarget;
|
||||
// If this nsDisplayOwnLayer represents a scroll thumb layer, mThumbData
|
||||
// stores information about the scroll thumb. Otherwise, mThumbData will be
|
||||
// default-constructed (in particular with mDirection == Nothing())
|
||||
// and can be ignored.
|
||||
ScrollbarData mThumbData;
|
||||
|
||||
/**
|
||||
* If this nsDisplayOwnLayer represents a scroll thumb layer or a
|
||||
* scrollbar container layer, mScrollbarData stores information
|
||||
* about the scrollbar. Otherwise, mScrollbarData will be
|
||||
* default-constructed (in particular with mDirection == Nothing())
|
||||
* and can be ignored.
|
||||
*/
|
||||
ScrollbarData mScrollbarData;
|
||||
bool mForceActive;
|
||||
uint64_t mWrAnimationId;
|
||||
};
|
||||
|
@ -1390,7 +1390,6 @@ nsBoxFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
aLists.Content()->AppendToTop(
|
||||
MakeDisplayItem<nsDisplayOwnLayer>(aBuilder, this, &masterList, ownLayerASR,
|
||||
nsDisplayOwnLayerFlags::eNone,
|
||||
mozilla::layers::FrameMetrics::NULL_SCROLL_ID,
|
||||
mozilla::layers::ScrollbarData{}, true, true));
|
||||
}
|
||||
}
|
||||
|
@ -459,7 +459,7 @@ nsSliderFrame::BuildDisplayListForChildren(nsDisplayListBuilder* aBuilder,
|
||||
const ActiveScrolledRoot* ownLayerASR = contASRTracker.GetContainerASR();
|
||||
aLists.Content()->AppendToTop(
|
||||
MakeDisplayItem<nsDisplayOwnLayer>(aBuilder, this, &masterList, ownLayerASR,
|
||||
flags, scrollTargetId,
|
||||
flags,
|
||||
ScrollbarData{scrollDirection,
|
||||
layers::ScrollbarLayerType::Thumb,
|
||||
GetThumbRatio(),
|
||||
@ -467,7 +467,8 @@ nsSliderFrame::BuildDisplayListForChildren(nsDisplayListBuilder* aBuilder,
|
||||
thumbLength,
|
||||
isAsyncDraggable,
|
||||
sliderTrackStart,
|
||||
sliderTrackLength}));
|
||||
sliderTrackLength,
|
||||
scrollTargetId}));
|
||||
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user