Bug 1714513 - Use ClipContentDescendants rather than ClipContainingBlockDescendants in nsPageContentFrame::BuildDisplayList. r=mattwoodrow

That way we guarantee to clip fixedpos boxes etc. This used to work
because this was further up the stack in nsPageFrame rather than
nsPageContentFrame:

  029a5e8fa8 (l6.262)

Differential Revision: https://phabricator.services.mozilla.com/D116857
This commit is contained in:
Emilio Cobos Álvarez 2021-06-09 07:57:27 +00:00
parent b35b40396e
commit 9f2318410c
3 changed files with 48 additions and 1 deletions

View File

@ -342,7 +342,7 @@ void nsPageContentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
// Overwrite current clip, since we're going to wrap in a transform and the
// current clip is no longer meaningful.
clipState.Clear();
clipState.ClipContainingBlockDescendants(clipRect);
clipState.ClipContentDescendants(clipRect);
if (StaticPrefs::layout_display_list_improve_fragmentation() &&
pageNum <= 255) {

View File

@ -0,0 +1,21 @@
<!doctype html>
<title>Test reference</title>
<style>
body { margin: 0 }
#outer, #inner {
background-color: purple;
width: 50%;
height: 100vh;
}
#inner {
position: absolute;
background-color: blue;
top: 0;
left: 50%;
}
</style>
<div id="outer">
<div id="inner"></div>
</div>

View File

@ -0,0 +1,26 @@
<!doctype html>
<title>position: fixed doesn't overflow the margin area</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1714513">
<link rel="help" href="https://drafts.csswg.org/css-position/#abspos-insets">
<link rel="match" href="position-fixed-overflow-print-ref.html">
<style>
body { margin: 0 }
#outer, #inner {
background-color: purple;
width: 100vw;
height: 100vh;
}
#inner {
position: fixed;
background-color: blue;
top: 0;
left: 50%;
}
</style>
<div id="outer">
<div id="inner"></div>
</div>