зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1395476 - Do not call mStoredList.RecomputeVisibility for 3d transforms r=mattwoodrow
MozReview-Commit-ID: 1pnYL2RtFi6 --HG-- extra : rebase_source : 85699125c4b547b99ce2bf8580e0cd40720a285b
This commit is contained in:
Родитель
afcd9e5c5b
Коммит
845735af56
|
@ -8495,6 +8495,14 @@ nsDisplayTransform::GetLayerState(nsDisplayListBuilder* aBuilder,
|
|||
bool nsDisplayTransform::ComputeVisibility(nsDisplayListBuilder *aBuilder,
|
||||
nsRegion *aVisibleRegion)
|
||||
{
|
||||
// nsDisplayTransform::GetBounds() returns an empty rect in nested 3d context.
|
||||
// Calling mStoredList.RecomputeVisibility below for such transform causes the
|
||||
// child display items to end up with empty visible rect.
|
||||
// We avoid this by bailing out always if we are dealing with a 3d context.
|
||||
if (mFrame->Extend3DContext() || mFrame->Combines3DTransformWithAncestors()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* As we do this, we need to be sure to
|
||||
* untransform the visible rect, since we want everything that's painting to
|
||||
* think that it's painting in its original rectangular coordinate space.
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Green square</title>
|
||||
<style>
|
||||
.filter {
|
||||
filter: brightness(0.75);
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
.square {
|
||||
position: absolute;
|
||||
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="filter">
|
||||
<div class="container">
|
||||
<div class="square"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Green square</title>
|
||||
<style>
|
||||
.filter {
|
||||
filter: brightness(0.75);
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
|
||||
transform-style: preserve-3d;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
.square {
|
||||
position: absolute;
|
||||
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
|
||||
transform-style: preserve-3d;
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="filter">
|
||||
<div class="container">
|
||||
<div class="square"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -90,3 +90,4 @@ fuzzy-if(winWidget,150,120) == component-alpha-1.html component-alpha-1-ref.html
|
|||
== nested-transform-1.html nested-transform-1-ref.html
|
||||
== transform-geometry-1.html transform-geometry-1-ref.html
|
||||
== intermediate-1.html intermediate-1-ref.html
|
||||
== preserves3d-nested-filter-1.html preserves3d-nested-filter-1-ref.html
|
||||
|
|
Загрузка…
Ссылка в новой задаче