зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1443380 - Don't mark all descendant frames modified for display list building when invalidating a frame subtree since marking just the root is sufficient. r=miko
This commit is contained in:
Родитель
7b723d1d6e
Коммит
8eb6516c62
|
@ -450,7 +450,7 @@ nsBlockFrame::GetFrameName(nsAString& aResult) const
|
|||
#endif
|
||||
|
||||
void
|
||||
nsBlockFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsBlockFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (nsSVGUtils::IsInSVGTextSubtree(this)) {
|
||||
NS_ASSERTION(GetParent()->IsSVGTextFrame(),
|
||||
|
@ -458,11 +458,11 @@ nsBlockFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
|||
GetParent()->InvalidateFrame();
|
||||
return;
|
||||
}
|
||||
nsContainerFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsContainerFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
void
|
||||
nsBlockFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsBlockFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (nsSVGUtils::IsInSVGTextSubtree(this)) {
|
||||
NS_ASSERTION(GetParent()->IsSVGTextFrame(),
|
||||
|
@ -470,7 +470,7 @@ nsBlockFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItem
|
|||
GetParent()->InvalidateFrame();
|
||||
return;
|
||||
}
|
||||
nsContainerFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsContainerFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
nscoord
|
||||
|
|
|
@ -148,8 +148,8 @@ public:
|
|||
nsIFrame::eBlockFrame));
|
||||
}
|
||||
|
||||
void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
|
||||
#ifdef DEBUG_FRAME_DUMP
|
||||
void List(FILE* out = stderr, const char* aPrefix = "", uint32_t aFlags = 0) const override;
|
||||
|
|
|
@ -7037,13 +7037,15 @@ SchedulePaintInternal(nsIFrame* aDisplayRoot, nsIFrame* aFrame,
|
|||
}
|
||||
}
|
||||
|
||||
static void InvalidateFrameInternal(nsIFrame *aFrame, bool aHasDisplayItem = true)
|
||||
static void InvalidateFrameInternal(nsIFrame *aFrame, bool aHasDisplayItem, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (aHasDisplayItem) {
|
||||
aFrame->AddStateBits(NS_FRAME_NEEDS_PAINT);
|
||||
}
|
||||
|
||||
aFrame->MarkNeedsDisplayItemRebuild();
|
||||
if (aRebuildDisplayItems) {
|
||||
aFrame->MarkNeedsDisplayItemRebuild();
|
||||
}
|
||||
SVGObserverUtils::InvalidateDirectRenderingObservers(aFrame);
|
||||
bool needsSchedulePaint = false;
|
||||
if (nsLayoutUtils::IsPopup(aFrame)) {
|
||||
|
@ -7083,13 +7085,11 @@ static void InvalidateFrameInternal(nsIFrame *aFrame, bool aHasDisplayItem = tru
|
|||
}
|
||||
|
||||
void
|
||||
nsIFrame::InvalidateFrameSubtree(uint32_t aDisplayItemKey)
|
||||
nsIFrame::InvalidateFrameSubtree(bool aRebuildDisplayItems /* = true */)
|
||||
{
|
||||
bool hasDisplayItem =
|
||||
!aDisplayItemKey || FrameLayerBuilder::HasRetainedDataFor(this, aDisplayItemKey);
|
||||
InvalidateFrame(aDisplayItemKey);
|
||||
InvalidateFrame(0, aRebuildDisplayItems);
|
||||
|
||||
if (HasAnyStateBits(NS_FRAME_ALL_DESCENDANTS_NEED_PAINT) || !hasDisplayItem) {
|
||||
if (HasAnyStateBits(NS_FRAME_ALL_DESCENDANTS_NEED_PAINT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -7102,7 +7102,10 @@ nsIFrame::InvalidateFrameSubtree(uint32_t aDisplayItemKey)
|
|||
for (; !lists.IsDone(); lists.Next()) {
|
||||
nsFrameList::Enumerator childFrames(lists.CurrentList());
|
||||
for (; !childFrames.AtEnd(); childFrames.Next()) {
|
||||
childFrames.get()->InvalidateFrameSubtree();
|
||||
// Don't explicitly rebuild display items for our descendants,
|
||||
// since we should be marked and it implicitly includes all
|
||||
// descendants.
|
||||
childFrames.get()->InvalidateFrameSubtree(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7129,21 +7132,21 @@ nsIFrame::ClearInvalidationStateBits()
|
|||
}
|
||||
|
||||
void
|
||||
nsIFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsIFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems /* = true */)
|
||||
{
|
||||
bool hasDisplayItem =
|
||||
!aDisplayItemKey || FrameLayerBuilder::HasRetainedDataFor(this, aDisplayItemKey);
|
||||
InvalidateFrameInternal(this, hasDisplayItem);
|
||||
InvalidateFrameInternal(this, hasDisplayItem, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
void
|
||||
nsIFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsIFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems /* = true */)
|
||||
{
|
||||
bool hasDisplayItem =
|
||||
!aDisplayItemKey || FrameLayerBuilder::HasRetainedDataFor(this, aDisplayItemKey);
|
||||
bool alreadyInvalid = false;
|
||||
if (!HasAnyStateBits(NS_FRAME_NEEDS_PAINT)) {
|
||||
InvalidateFrameInternal(this, hasDisplayItem);
|
||||
InvalidateFrameInternal(this, hasDisplayItem, aRebuildDisplayItems);
|
||||
} else {
|
||||
alreadyInvalid = true;
|
||||
}
|
||||
|
|
|
@ -2944,8 +2944,12 @@ public:
|
|||
* @param aDisplayItemKey If specified, only issues an invalidate
|
||||
* if this frame painted a display item of that type during the
|
||||
* previous paint. SVG rendering observers are always notified.
|
||||
* @param aRebuildDisplayItems If true, then adds this frame to the
|
||||
* list of modified frames for display list building. Only pass false
|
||||
* if you're sure that the relevant display items will be rebuilt
|
||||
* already (possibly by an ancestor being in the modified list).
|
||||
*/
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0);
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true);
|
||||
|
||||
/**
|
||||
* Same as InvalidateFrame(), but only mark a fixed rect as needing
|
||||
|
@ -2956,8 +2960,12 @@ public:
|
|||
* @param aDisplayItemKey If specified, only issues an invalidate
|
||||
* if this frame painted a display item of that type during the
|
||||
* previous paint. SVG rendering observers are always notified.
|
||||
* @param aRebuildDisplayItems If true, then adds this frame to the
|
||||
* list of modified frames for display list building. Only pass false
|
||||
* if you're sure that the relevant display items will be rebuilt
|
||||
* already (possibly by an ancestor being in the modified list).
|
||||
*/
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0);
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true);
|
||||
|
||||
/**
|
||||
* Calls InvalidateFrame() on all frames descendant frames (including
|
||||
|
@ -2966,11 +2974,12 @@ public:
|
|||
* This function doesn't walk through placeholder frames to invalidate
|
||||
* the out-of-flow frames.
|
||||
*
|
||||
* @param aDisplayItemKey If specified, only issues an invalidate
|
||||
* if this frame painted a display item of that type during the
|
||||
* previous paint. SVG rendering observers are always notified.
|
||||
* @param aRebuildDisplayItems If true, then adds this frame to the
|
||||
* list of modified frames for display list building. Only pass false
|
||||
* if you're sure that the relevant display items will be rebuilt
|
||||
* already (possibly by an ancestor being in the modified list).
|
||||
*/
|
||||
void InvalidateFrameSubtree(uint32_t aDisplayItemKey = 0);
|
||||
void InvalidateFrameSubtree(bool aRebuildDisplayItems = true);
|
||||
|
||||
/**
|
||||
* Called when a frame is about to be removed and needs to be invalidated.
|
||||
|
|
|
@ -57,7 +57,7 @@ nsInlineFrame::GetFrameName(nsAString& aResult) const
|
|||
#endif
|
||||
|
||||
void
|
||||
nsInlineFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsInlineFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (nsSVGUtils::IsInSVGTextSubtree(this)) {
|
||||
nsIFrame* svgTextFrame = nsLayoutUtils::GetClosestFrameOfType(
|
||||
|
@ -65,11 +65,11 @@ nsInlineFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
|||
svgTextFrame->InvalidateFrame();
|
||||
return;
|
||||
}
|
||||
nsContainerFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsContainerFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
void
|
||||
nsInlineFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsInlineFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (nsSVGUtils::IsInSVGTextSubtree(this)) {
|
||||
nsIFrame* svgTextFrame = nsLayoutUtils::GetClosestFrameOfType(
|
||||
|
@ -77,7 +77,7 @@ nsInlineFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayIte
|
|||
svgTextFrame->InvalidateFrame();
|
||||
return;
|
||||
}
|
||||
nsContainerFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsContainerFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
|
|
|
@ -50,8 +50,8 @@ public:
|
|||
~(nsIFrame::eBidiInlineContainer | nsIFrame::eLineParticipant));
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
|
||||
virtual bool IsEmpty() override;
|
||||
virtual bool IsSelfEmpty() override;
|
||||
|
|
|
@ -4685,7 +4685,7 @@ nsTextFrame::LastContinuation() const
|
|||
}
|
||||
|
||||
void
|
||||
nsTextFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsTextFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (nsSVGUtils::IsInSVGTextSubtree(this)) {
|
||||
nsIFrame* svgTextFrame = nsLayoutUtils::GetClosestFrameOfType(
|
||||
|
@ -4693,11 +4693,11 @@ nsTextFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
|||
svgTextFrame->InvalidateFrame();
|
||||
return;
|
||||
}
|
||||
nsFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsTextFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
if (nsSVGUtils::IsInSVGTextSubtree(this)) {
|
||||
nsIFrame* svgTextFrame = nsLayoutUtils::GetClosestFrameOfType(
|
||||
|
@ -4705,7 +4705,7 @@ nsTextFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemK
|
|||
svgTextFrame->InvalidateFrame();
|
||||
return;
|
||||
}
|
||||
nsFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
}
|
||||
|
||||
gfxTextRun*
|
||||
|
|
|
@ -160,9 +160,10 @@ public:
|
|||
return Style()->ShouldSuppressLineBreak();
|
||||
}
|
||||
|
||||
void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
void InvalidateFrameWithRect(const nsRect& aRect,
|
||||
uint32_t aDisplayItemKey = 0) override;
|
||||
uint32_t aDisplayItemKey = 0,
|
||||
bool aRebuildDisplayItems = true) override;
|
||||
|
||||
#ifdef DEBUG_FRAME_DUMP
|
||||
void List(FILE* out = stderr,
|
||||
|
|
|
@ -438,21 +438,21 @@ nsDisplayTableCellBackground::GetBounds(nsDisplayListBuilder* aBuilder,
|
|||
return nsDisplayItem::GetBounds(aBuilder, aSnap);
|
||||
}
|
||||
|
||||
void nsTableCellFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
void nsTableCellFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
if (GetTableFrame()->IsBorderCollapse() && StyleBorder()->HasBorder()) {
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
}
|
||||
|
||||
void nsTableCellFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
void nsTableCellFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
// If we have filters applied that would affects our bounds, then
|
||||
// we get an inactive layer created and this is computed
|
||||
// within FrameLayerBuilder
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -240,8 +240,8 @@ public:
|
|||
return nsContainerFrame::IsFrameOfType(aFlags & ~(nsIFrame::eTablePart));
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameForRemoval() override { InvalidateFrameSubtree(); }
|
||||
|
||||
bool ShouldPaintBordersAndBackgrounds() const;
|
||||
|
|
|
@ -209,22 +209,22 @@ nsTableColFrame::GetSplittableType() const
|
|||
}
|
||||
|
||||
void
|
||||
nsTableColFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsTableColFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
if (GetTableFrame()->IsBorderCollapse() && StyleBorder()->HasBorder()) {
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTableColFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsTableColFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
|
||||
// If we have filters applied that would affects our bounds, then
|
||||
// we get an inactive layer created and this is computed
|
||||
// within FrameLayerBuilder
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
|
||||
|
|
|
@ -277,8 +277,8 @@ public:
|
|||
return nsSplittableFrame::IsFrameOfType(aFlags & ~(nsIFrame::eTablePart));
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameForRemoval() override { InvalidateFrameSubtree(); }
|
||||
|
||||
protected:
|
||||
|
|
|
@ -449,23 +449,24 @@ NS_NewTableColGroupFrame(nsIPresShell* aPresShell, ComputedStyle* aStyle)
|
|||
NS_IMPL_FRAMEARENA_HELPERS(nsTableColGroupFrame)
|
||||
|
||||
void
|
||||
nsTableColGroupFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsTableColGroupFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
if (GetTableFrame()->IsBorderCollapse() && StyleBorder()->HasBorder()) {
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTableColGroupFrame::InvalidateFrameWithRect(const nsRect& aRect,
|
||||
uint32_t aDisplayItemKey)
|
||||
uint32_t aDisplayItemKey,
|
||||
bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
// If we have filters applied that would affects our bounds, then
|
||||
// we get an inactive layer created and this is computed
|
||||
// within FrameLayerBuilder
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_FRAME_DUMP
|
||||
|
|
|
@ -198,8 +198,8 @@ public:
|
|||
return nsContainerFrame::IsFrameOfType(aFlags & ~(nsIFrame::eTablePart));
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameForRemoval() override { InvalidateFrameSubtree(); }
|
||||
|
||||
protected:
|
||||
|
|
|
@ -1441,22 +1441,22 @@ void nsTableRowFrame::InitHasCellWithStyleBSize(nsTableFrame* aTableFrame)
|
|||
}
|
||||
|
||||
void
|
||||
nsTableRowFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsTableRowFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
if (GetTableFrame()->IsBorderCollapse() && StyleBorder()->HasBorder()) {
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTableRowFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsTableRowFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
// If we have filters applied that would affects our bounds, then
|
||||
// we get an inactive layer created and this is computed
|
||||
// within FrameLayerBuilder
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
|
||||
/* ----- global methods ----- */
|
||||
|
|
|
@ -242,8 +242,8 @@ public:
|
|||
return nsContainerFrame::IsFrameOfType(aFlags & ~(nsIFrame::eTablePart));
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameForRemoval() override { InvalidateFrameSubtree(); }
|
||||
|
||||
#ifdef ACCESSIBILITY
|
||||
|
|
|
@ -1989,20 +1989,20 @@ nsTableRowGroupFrame::FrameCursorData::AppendFrame(nsIFrame* aFrame)
|
|||
}
|
||||
|
||||
void
|
||||
nsTableRowGroupFrame::InvalidateFrame(uint32_t aDisplayItemKey)
|
||||
nsTableRowGroupFrame::InvalidateFrame(uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
|
||||
if (GetTableFrame()->IsBorderCollapse() && StyleBorder()->HasBorder()) {
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTableRowGroupFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey)
|
||||
nsTableRowGroupFrame::InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey, bool aRebuildDisplayItems)
|
||||
{
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey);
|
||||
nsIFrame::InvalidateFrameWithRect(aRect, aDisplayItemKey, aRebuildDisplayItems);
|
||||
// If we have filters applied that would affects our bounds, then
|
||||
// we get an inactive layer created and this is computed
|
||||
// within FrameLayerBuilder
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey);
|
||||
GetParent()->InvalidateFrameWithRect(aRect + GetPosition(), aDisplayItemKey, false);
|
||||
}
|
||||
|
|
|
@ -328,8 +328,8 @@ public:
|
|||
return nsContainerFrame::IsFrameOfType(aFlags & ~(nsIFrame::eTablePart));
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0) override;
|
||||
virtual void InvalidateFrame(uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameWithRect(const nsRect& aRect, uint32_t aDisplayItemKey = 0, bool aRebuildDisplayItems = true) override;
|
||||
virtual void InvalidateFrameForRemoval() override { InvalidateFrameSubtree(); }
|
||||
|
||||
protected:
|
||||
|
|
Загрузка…
Ссылка в новой задаче