summaryrefslogtreecommitdiffstats
path: root/layout/generic/nsPageFrame.cpp
diff options
context:
space:
mode:
authorwin7-7 <win7-7@users.noreply.github.com>2020-05-08 15:20:01 +0300
committerwin7-7 <win7-7@users.noreply.github.com>2020-05-08 15:20:01 +0300
commitf102e7f80d5d7c972e7619c3f9efe7460918c6d4 (patch)
tree5dd8ad7581b00ebeb8195405de2e1f2496376942 /layout/generic/nsPageFrame.cpp
parent257e62db993cec43d1ec650a8a33b3e25139cbc2 (diff)
downloadUXP-f102e7f80d5d7c972e7619c3f9efe7460918c6d4.tar
UXP-f102e7f80d5d7c972e7619c3f9efe7460918c6d4.tar.gz
UXP-f102e7f80d5d7c972e7619c3f9efe7460918c6d4.tar.lz
UXP-f102e7f80d5d7c972e7619c3f9efe7460918c6d4.tar.xz
UXP-f102e7f80d5d7c972e7619c3f9efe7460918c6d4.zip
Issue #1355 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList
Also fix build bustage for De-unified layout/xul in nsRootBoxFrame.cpp
Diffstat (limited to 'layout/generic/nsPageFrame.cpp')
-rw-r--r--layout/generic/nsPageFrame.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/layout/generic/nsPageFrame.cpp b/layout/generic/nsPageFrame.cpp
index ae3af6ef7..473d3a21d 100644
--- a/layout/generic/nsPageFrame.cpp
+++ b/layout/generic/nsPageFrame.cpp
@@ -437,7 +437,7 @@ PruneDisplayListForExtraPage(nsDisplayListBuilder* aBuilder,
static void
BuildDisplayListForExtraPage(nsDisplayListBuilder* aBuilder,
nsPageFrame* aPage, nsIFrame* aExtraPage,
- const nsRect& aDirtyRect, nsDisplayList* aList)
+ nsDisplayList* aList)
{
// The only content in aExtraPage we care about is out-of-flow content whose
// placeholders have occurred in aPage. If
@@ -447,7 +447,7 @@ BuildDisplayListForExtraPage(nsDisplayListBuilder* aBuilder,
return;
}
nsDisplayList list;
- aExtraPage->BuildDisplayListForStackingContext(aBuilder, aDirtyRect, &list);
+ aExtraPage->BuildDisplayListForStackingContext(aBuilder, &list);
PruneDisplayListForExtraPage(aBuilder, aPage, aExtraPage, &list);
aList->AppendToTop(&list);
}
@@ -517,7 +517,6 @@ protected:
//------------------------------------------------------------------------------
void
nsPageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
- const nsRect& aDirtyRect,
const nsDisplayListSet& aLists)
{
nsDisplayListCollection set;
@@ -558,7 +557,10 @@ nsPageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
clipState.ClipContainingBlockDescendants(clipRect, nullptr);
nsRect dirtyRect = child->GetVisualOverflowRectRelativeToSelf();
- child->BuildDisplayListForStackingContext(aBuilder, dirtyRect, &content);
+ nsDisplayListBuilder::AutoBuildingDisplayList
+ buildingForChild(aBuilder, child, dirtyRect,
+ aBuilder->IsAtRootOfPseudoStackingContext());
+ child->BuildDisplayListForStackingContext(aBuilder, &content);
// We may need to paint out-of-flow frames whose placeholders are
// on other pages. Add those pages to our display list. Note that
@@ -569,8 +571,12 @@ nsPageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
// following placeholders to their out-of-flows) end up on the list.
nsIFrame* page = child;
while ((page = GetNextPage(page)) != nullptr) {
- BuildDisplayListForExtraPage(aBuilder, this, page,
- dirtyRect + child->GetOffsetTo(page), &content);
+ nsRect childDirty = dirtyRect + child->GetOffsetTo(page);
+
+ nsDisplayListBuilder::AutoBuildingDisplayList
+ buildingForChild(aBuilder, page, childDirty,
+ aBuilder->IsAtRootOfPseudoStackingContext());
+ BuildDisplayListForExtraPage(aBuilder, this, page, &content);
}
// Invoke AutoBuildingDisplayList to ensure that the correct dirtyRect