From 0f001155aa004f1a6679f386d49f64306fb54ab1 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sun, 1 Dec 2019 06:20:05 +0100 Subject: Issue #1308 - Create nsDisplayTableBackgroundColor to avoid display list collisions when processing the background color of a table. This is effectively #146 Part 3c to go along with the other 2 there. This resolves #1308. --- layout/base/nsDisplayList.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'layout/base/nsDisplayList.h') diff --git a/layout/base/nsDisplayList.h b/layout/base/nsDisplayList.h index e9047b113..9cee7b517 100644 --- a/layout/base/nsDisplayList.h +++ b/layout/base/nsDisplayList.h @@ -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(mTableType) << nsDisplayItem::TYPE_BITS) | + nsDisplayItem::GetPerFrameKey(); + } +protected: + TableType mTableType; +}; + class nsDisplayClearBackground : public nsDisplayItem { public: -- cgit v1.2.3