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); nsRect newBounds(nsPoint(0, 0), aNewSize);
// Transform affects both overflow areas. // Transform affects both overflow areas.
if (!Preserves3DChildren()) { NS_FOR_FRAME_OVERFLOW_TYPES(otype) {
NS_FOR_FRAME_OVERFLOW_TYPES(otype) { nsRect& o = aOverflowAreas.Overflow(otype);
nsRect& o = aOverflowAreas.Overflow(otype); o = nsDisplayTransform::TransformRect(o, this, nsPoint(0, 0), &newBounds);
o = nsDisplayTransform::TransformRect(o, this, nsPoint(0, 0), &newBounds); }
} if (Preserves3DChildren()) {
} else {
ComputePreserve3DChildrenOverflow(aOverflowAreas, newBounds); ComputePreserve3DChildrenOverflow(aOverflowAreas, newBounds);
} }
} }
@@ -6785,8 +6784,8 @@ nsIFrame::ComputePreserve3DChildrenOverflow(nsOverflowAreas& aOverflowAreas, con
} }
} }
aOverflowAreas.Overflow(eVisualOverflow) = childVisual; aOverflowAreas.Overflow(eVisualOverflow) = aOverflowAreas.Overflow(eVisualOverflow).Union(childVisual);
aOverflowAreas.Overflow(eScrollableOverflow) = childScrollable; aOverflowAreas.Overflow(eScrollableOverflow) = aOverflowAreas.Overflow(eScrollableOverflow).Union(childScrollable);
} }
void 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-2b.html preserve3d-2-ref.html
== preserve3d-2c.html preserve3d-2-ref.html == preserve3d-2c.html preserve3d-2-ref.html
== preserve3d-2d.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-z.html scalez-1-ref.html
== scale3d-all.html scale3d-1-ref.html == scale3d-all.html scale3d-1-ref.html
== scale3d-xz.html scale3d-2-ref.html == scale3d-xz.html scale3d-2-ref.html