Bug 702375 - Include the current frame bounds in preserve-3d overflow calculations. r=roc

This commit is contained in:
Matt Woodrow
2011-11-17 16:45:39 +13:00
parent 825740e9be
commit df4ea4e5ab
4 changed files with 24 additions and 8 deletions

View File

@@ -6627,12 +6627,11 @@ nsIFrame::FinishAndStoreOverflow(nsOverflowAreas& aOverflowAreas,
*/
nsRect newBounds(nsPoint(0, 0), aNewSize);
// Transform affects both overflow areas.
if (!Preserves3DChildren()) {
NS_FOR_FRAME_OVERFLOW_TYPES(otype) {
nsRect& o = aOverflowAreas.Overflow(otype);
o = nsDisplayTransform::TransformRect(o, this, nsPoint(0, 0), &newBounds);
}
} else {
if (Preserves3DChildren()) {
ComputePreserve3DChildrenOverflow(aOverflowAreas, newBounds);
}
}
@@ -6785,8 +6784,8 @@ nsIFrame::ComputePreserve3DChildrenOverflow(nsOverflowAreas& aOverflowAreas, con
}
}
aOverflowAreas.Overflow(eVisualOverflow) = childVisual;
aOverflowAreas.Overflow(eScrollableOverflow) = childScrollable;
aOverflowAreas.Overflow(eVisualOverflow) = aOverflowAreas.Overflow(eVisualOverflow).Union(childVisual);
aOverflowAreas.Overflow(eScrollableOverflow) = aOverflowAreas.Overflow(eScrollableOverflow).Union(childScrollable);
}
void

View File

@@ -0,0 +1,8 @@
<html>
<head>
</head>
<body>
<div style="-moz-transform: rotatex(45deg); width: 100px; height: 100px; background:red;">
</div>
</body>
</html>

View File

@@ -0,0 +1,8 @@
<html>
<head>
</head>
<body>
<div style="-moz-transform: rotatex(45deg); -moz-transform-style: preserve-3d; width: 100px; height: 100px; background:red;">
</div>
</body>
</html>

View File

@@ -16,6 +16,7 @@ fails == preserve3d-1a.html preserve3d-1-ref.html
== preserve3d-2b.html preserve3d-2-ref.html
== preserve3d-2c.html preserve3d-2-ref.html
== preserve3d-2d.html preserve3d-2-ref.html
== preserve3d-3a.html preserve3d-3-ref.html
== scale3d-z.html scalez-1-ref.html
== scale3d-all.html scale3d-1-ref.html
== scale3d-xz.html scale3d-2-ref.html