Create nsDisplayTableBackgroundColor...

This commit is contained in:
Fedor 2019-12-25 15:47:09 +03:00
parent ec60efd232
commit d34f19407a
2 changed files with 37 additions and 3 deletions

View File

@ -2703,9 +2703,22 @@ nsDisplayBackgroundImage::AppendBackgroundItemsToTop(nsDisplayListBuilder* aBuil
bg->BottomLayer(), bgRect,
useWillPaintBorderOptimization);
}
bgItemList.AppendNewToTop(
new (aBuilder) nsDisplayBackgroundColor(aBuilder, aFrame, bgRect, bg,
drawBackgroundColor ? color : NS_RGBA(0, 0, 0, 0)));
if (aSecondaryReferenceFrame) {
bgItemList.AppendNewToTop(
new (aBuilder) nsDisplayTableBackgroundColor(aBuilder,
aSecondaryReferenceFrame,
bgRect,
bg,
drawBackgroundColor ? color : NS_RGBA(0, 0, 0, 0),
aFrame));
} else {
bgItemList.AppendNewToTop(
new (aBuilder) nsDisplayBackgroundColor(aBuilder,
aFrame,
bgRect,
bg,
drawBackgroundColor ? color : NS_RGBA(0, 0, 0, 0)));
}
}
if (isThemed) {

View File

@ -3015,6 +3015,27 @@ protected:
mozilla::gfx::Color mColor;
};
class nsDisplayTableBackgroundColor : public nsDisplayBackgroundColor
{
public:
nsDisplayTableBackgroundColor(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
const nsRect& aBackgroundRect,
const nsStyleBackground* aBackgroundStyle,
nscolor aColor,
nsIFrame* aAncestorFrame)
: nsDisplayBackgroundColor(aBuilder, aFrame, aBackgroundRect, aBackgroundStyle, aColor)
, mTableType(GetTableTypeFromFrame(aAncestorFrame))
{ }
virtual uint32_t GetPerFrameKey() override {
return (static_cast<uint8_t>(mTableType) << nsDisplayItem::TYPE_BITS) |
nsDisplayItem::GetPerFrameKey();
}
protected:
TableType mTableType;
};
class nsDisplayClearBackground : public nsDisplayItem
{
public: