зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1458145
- Extend the ASR adjustment performed on perspective items, to a wrapping OwnLayer item as well. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D100144
This commit is contained in:
Родитель
726ab31493
Коммит
1630744f89
|
@ -4891,15 +4891,21 @@ void ContainerState::ProcessDisplayItems(nsDisplayList* aList) {
|
|||
params.mCompositorASR = itemASR;
|
||||
}
|
||||
|
||||
if (itemType == DisplayItemType::TYPE_PERSPECTIVE) {
|
||||
// Perspective items have a single child item, an nsDisplayTransform.
|
||||
// If the perspective item is scrolled, but the perspective-inducing
|
||||
// frame is outside the scroll frame (indicated by item->Frame()
|
||||
// being outside that scroll frame), we have to take special care to
|
||||
// make APZ scrolling work properly. APZ needs us to put the scroll
|
||||
// frame's FrameMetrics on our child transform ContainerLayer instead.
|
||||
// It's worth investigating whether this ASR adjustment can be done at
|
||||
// display item creation time.
|
||||
// Perspective items have a single child item, an nsDisplayTransform.
|
||||
// If the perspective item is scrolled, but the perspective-inducing
|
||||
// frame is outside the scroll frame (indicated by item->Frame()
|
||||
// being outside that scroll frame), we have to take special care to
|
||||
// make APZ scrolling work properly. APZ needs us to put the scroll
|
||||
// frame's FrameMetrics on our child transform ContainerLayer instead.
|
||||
// We make a similar adjustment for OwnLayer items built for frames
|
||||
// with perspective transforms (e.g. when they have rounded corners).
|
||||
// It's worth investigating whether this ASR adjustment can be done at
|
||||
// display item creation time.
|
||||
bool deferASRForPerspective =
|
||||
itemType == DisplayItemType::TYPE_PERSPECTIVE ||
|
||||
(itemType == DisplayItemType::TYPE_OWN_LAYER &&
|
||||
item->Frame()->IsTransformed() && item->Frame()->HasPerspective());
|
||||
if (deferASRForPerspective) {
|
||||
scrollMetadataASR = GetASRForPerspective(
|
||||
scrollMetadataASR,
|
||||
item->Frame()->GetContainingBlock(nsIFrame::SKIP_SCROLLED_FRAME));
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<style>
|
||||
* { position: fixed; }
|
||||
#a {
|
||||
perspective: 0px;
|
||||
overflow: scroll;
|
||||
}
|
||||
.cl2 { -webkit-transform-style: preserve-3d; }
|
||||
.cl1 { border-bottom-right-radius: 0px 1px; }
|
||||
</style>
|
||||
<del id="a" class="cl1">
|
||||
<dl class="cl2">#_k</dl>
|
|
@ -11,6 +11,7 @@ load 1428906-1.html
|
|||
load 1430589-1.html
|
||||
load 1454105-1.html
|
||||
load 1455944-1.html
|
||||
load 1458145.html
|
||||
load 1465305-1.html
|
||||
load 1468124-1.html
|
||||
load 1469472.html
|
||||
|
|
Загрузка…
Ссылка в новой задаче