зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1384616 - Save APZ-relevant scrollbar data into the WR scroll data for layers-free transactions. r=jrmuizel
MozReview-Commit-ID: 6DQz9N6Wq0H --HG-- extra : rebase_source : 8a113d4a53e1562b55cc05a0bc411675a2ca9eb1
This commit is contained in:
Родитель
4ed905c664
Коммит
c3e4aef0b4
|
@ -70,10 +70,16 @@ public:
|
|||
void SetReferentId(uint64_t aReferentId) { mReferentId = Some(aReferentId); }
|
||||
Maybe<uint64_t> GetReferentId() const { return mReferentId; }
|
||||
EventRegionsOverride GetEventRegionsOverride() const { return mEventRegionsOverride; }
|
||||
|
||||
void SetScrollThumbData(const ScrollThumbData& aData) { mScrollThumbData = aData; }
|
||||
const ScrollThumbData& GetScrollThumbData() const { return mScrollThumbData; }
|
||||
void SetScrollbarAnimationId(const uint64_t& aId) { mScrollbarAnimationId = aId; }
|
||||
const uint64_t& GetScrollbarAnimationId() const { return mScrollbarAnimationId; }
|
||||
void SetScrollbarTargetContainerId(FrameMetrics::ViewID aId) { mScrollbarTargetContainerId = aId; }
|
||||
FrameMetrics::ViewID GetScrollbarTargetContainerId() const { return mScrollbarTargetContainerId; }
|
||||
void SetIsScrollbarContainer() { mIsScrollbarContainer = true; }
|
||||
bool IsScrollbarContainer() const { return mIsScrollbarContainer; }
|
||||
|
||||
void SetFixedPositionScrollContainerId(FrameMetrics::ViewID aId) { mFixedPosScrollContainerId = aId; }
|
||||
FrameMetrics::ViewID GetFixedPositionScrollContainerId() const { return mFixedPosScrollContainerId; }
|
||||
|
||||
|
|
|
@ -6390,6 +6390,28 @@ nsDisplayOwnLayer::BuildLayer(nsDisplayListBuilder* aBuilder,
|
|||
return layer.forget();
|
||||
}
|
||||
|
||||
bool
|
||||
nsDisplayOwnLayer::UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
|
||||
mozilla::layers::WebRenderLayerScrollData* aLayerData)
|
||||
{
|
||||
bool ret = false;
|
||||
if (IsScrollThumbLayer()) {
|
||||
ret = true;
|
||||
if (aLayerData) {
|
||||
aLayerData->SetScrollThumbData(mThumbData);
|
||||
aLayerData->SetScrollbarTargetContainerId(mScrollTarget);
|
||||
}
|
||||
}
|
||||
if (mFlags & SCROLLBAR_CONTAINER) {
|
||||
ret = true;
|
||||
if (aLayerData) {
|
||||
aLayerData->SetIsScrollbarContainer();
|
||||
aLayerData->SetScrollbarTargetContainerId(mScrollTarget);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
nsDisplaySubDocument::nsDisplaySubDocument(nsDisplayListBuilder* aBuilder,
|
||||
nsIFrame* aFrame, nsDisplayList* aList,
|
||||
uint32_t aFlags)
|
||||
|
@ -6697,7 +6719,7 @@ nsDisplayFixedPosition::UpdateScrollData(mozilla::layers::WebRenderScrollData* a
|
|||
Frame()->PresContext());
|
||||
aLayerData->SetFixedPositionScrollContainerId(id);
|
||||
}
|
||||
return true;
|
||||
return nsDisplayOwnLayer::UpdateScrollData(aData, aLayerData) | true;
|
||||
}
|
||||
|
||||
TableType
|
||||
|
|
|
@ -4150,6 +4150,8 @@ public:
|
|||
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aContainerParameters) override;
|
||||
virtual bool UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
|
||||
mozilla::layers::WebRenderLayerScrollData* aLayerData) override;
|
||||
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aParameters) override;
|
||||
|
|
Загрузка…
Ссылка в новой задаче