diff options
author | Moonchild <moonchild@palemoon.org> | 2020-05-10 15:02:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-10 15:02:59 +0200 |
commit | 221627575b56e8bb85e8329400da99138f2f67c1 (patch) | |
tree | 28b0142ae0eedc45e992bb7bacafdc3dba7a15af /layout/forms/nsFieldSetFrame.cpp | |
parent | 1659e69dfb075975f366b1e2dbfa145febb2094f (diff) | |
parent | f9047ff63de90e8c0242a5e7170a8c70f93f99b1 (diff) | |
download | UXP-221627575b56e8bb85e8329400da99138f2f67c1.tar UXP-221627575b56e8bb85e8329400da99138f2f67c1.tar.gz UXP-221627575b56e8bb85e8329400da99138f2f67c1.tar.lz UXP-221627575b56e8bb85e8329400da99138f2f67c1.tar.xz UXP-221627575b56e8bb85e8329400da99138f2f67c1.zip |
Merge pull request #1537 from win7-7/column-backgrounds-pr-2
Better way to create display items for column backgrounds
Diffstat (limited to 'layout/forms/nsFieldSetFrame.cpp')
-rw-r--r-- | layout/forms/nsFieldSetFrame.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/layout/forms/nsFieldSetFrame.cpp b/layout/forms/nsFieldSetFrame.cpp index fc9f0571b..a5177560d 100644 --- a/layout/forms/nsFieldSetFrame.cpp +++ b/layout/forms/nsFieldSetFrame.cpp @@ -153,7 +153,6 @@ nsDisplayFieldSetBorderBackground::ComputeInvalidationRegion(nsDisplayListBuilde void nsFieldSetFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, - const nsRect& aDirtyRect, const nsDisplayListSet& aLists) { // Paint our background and border in a special way. // REVIEW: We don't really need to check frame emptiness here; if it's empty, @@ -166,9 +165,11 @@ nsFieldSetFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, nsDisplayBoxShadowOuter(aBuilder, this)); } + const nsRect rect = + VisualBorderRectRelativeToSelf() + aBuilder->ToReferenceFrame(this); + nsDisplayBackgroundImage::AppendBackgroundItemsToTop( - aBuilder, this, VisualBorderRectRelativeToSelf(), - aLists.BorderBackground(), + aBuilder, this, rect, aLists.BorderBackground(), /* aAllowWillPaintBorderOptimization = */ false); aLists.BorderBackground()->AppendNewToTop(new (aBuilder) @@ -180,10 +181,10 @@ nsFieldSetFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, } if (GetPrevInFlow()) { - DisplayOverflowContainers(aBuilder, aDirtyRect, aLists); + DisplayOverflowContainers(aBuilder, aLists); } - nsDisplayListCollection contentDisplayItems; + nsDisplayListCollection contentDisplayItems(aBuilder); if (nsIFrame* inner = GetInner()) { // Collect the inner frame's display items into their own collection. // We need to be calling BuildDisplayList on it before the legend in @@ -191,13 +192,13 @@ nsFieldSetFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, // legend. However, we want the inner frame's display items to be // after the legend's display items in z-order, so we need to save them // and append them later. - BuildDisplayListForChild(aBuilder, inner, aDirtyRect, contentDisplayItems); + BuildDisplayListForChild(aBuilder, inner, contentDisplayItems); } if (nsIFrame* legend = GetLegend()) { // The legend's background goes on our BlockBorderBackgrounds list because // it's a block child. nsDisplayListSet set(aLists, aLists.BlockBorderBackgrounds()); - BuildDisplayListForChild(aBuilder, legend, aDirtyRect, set); + BuildDisplayListForChild(aBuilder, legend, set); } // Put the inner frame's display items on the master list. Note that this // moves its border/background display items to our BorderBackground() list, |