Bug 1637130 - Rename visual overflow to ink overflow. r=dbaron

This patch is generated by:

```
# Rename the nsOverflowType enum.
rg -l "eVisualOverflow" layout/ gfx/ | xargs sed -i "s/eVisualOverflow/eInkOverflow/g"

# Rename and drop the "Get" prefix from various functions.
rg -l "GetVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowRect/InkOverflowRect/g"
rg -l "GetPreEffectsVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetPreEffectsVisualOverflowRect/PreEffectsInkOverflowRect/g"
rg -l "GetVisualOverflowFromDeltas" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowFromDeltas/InkOverflowFromDeltas/g"
rg -l "GetScrollableOverflowRect" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowRect/ScrollableOverflowRect/g"

# Rename, drop the "Get" prefix, and change the suffix "Area" to "Rect"
# (because they return nsRect) for the two methods in nsLineBox.
rg -l "GetVisualOverflowArea" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowArea/InkOverflowRect/g"
rg -l "GetScrollableOverflowArea" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowArea/ScrollableOverflowRect/g"

# Rename rest of the functions and variables.
rg -l "VisualOverflow" layout/ gfx/ | xargs sed -i "s/VisualOverflow/InkOverflow/g"
rg -l "visual overflow" layout/ gfx/ | xargs sed -i "s/visual overflow/ink overflow/g"
rg -l "visualOverflow" layout/ gfx/ | xargs sed -i "s/visualOverflow/inkOverflow/g"
rg -l "visOverflow" layout/ gfx/ | xargs sed -i "s/visOverflow/inkOverflow/g"
rg -l "vis-overflow" layout/ gfx/ python/ | xargs sed -i "s/vis-overflow/ink-overflow/g"

./mach clang-format
```

Differential Revision: https://phabricator.services.mozilla.com/D84231
This commit is contained in:
Ting-Yu Lin 2020-07-20 20:17:36 +00:00
Родитель 023457eb88
Коммит fdc00547f6
75 изменённых файлов: 432 добавлений и 454 удалений

Просмотреть файл

@ -698,7 +698,7 @@ static ParentLayerRect GetClipRectForPartialPrerender(
static PartialPrerenderData GetPartialPrerenderData(
const nsIFrame* aFrame, const nsDisplayItem* aItem) {
const nsRect& partialPrerenderedRect = aItem->GetUntransformedPaintRect();
nsRect overflow = aFrame->GetVisualOverflowRectRelativeToSelf();
nsRect overflow = aFrame->InkOverflowRectRelativeToSelf();
ScrollableLayerGuid::ViewID scrollId = ScrollableLayerGuid::NULL_SCROLL_ID;

Просмотреть файл

@ -372,7 +372,7 @@ nsBoundingMetrics nsFontMetrics::GetBoundingMetrics(const char16_t* aString,
gfxFont::TIGHT_HINTED_OUTLINE_EXTENTS);
}
nsBoundingMetrics nsFontMetrics::GetInkBoundsForVisualOverflow(
nsBoundingMetrics nsFontMetrics::GetInkBoundsForInkOverflow(
const char16_t* aString, uint32_t aLength, DrawTarget* aDrawTarget) {
return GetTextBoundingMetrics(this, aString, aLength, aDrawTarget,
gfxFont::LOOSE_INK_EXTENTS);

Просмотреть файл

@ -218,9 +218,9 @@ class nsFontMetrics final {
// Returns the LOOSE_INK_EXTENTS bounds of the text for determing the
// overflow area of the string.
nsBoundingMetrics GetInkBoundsForVisualOverflow(const char16_t* aString,
uint32_t aLength,
DrawTarget* aDrawTarget);
nsBoundingMetrics GetInkBoundsForInkOverflow(const char16_t* aString,
uint32_t aLength,
DrawTarget* aDrawTarget);
void SetTextRunRTL(bool aIsRTL) { mTextRunRTL = aIsRTL; }
bool GetTextRunRTL() const { return mTextRunRTL; }

Просмотреть файл

@ -122,7 +122,7 @@ class nsITheme : public nsISupports {
* This overflow area is used to determine what area needs to be
* repainted when the widget changes. However, it does not affect the
* widget's size or what area is reachable by scrollbars. (In other
* words, in layout terms, it affects visual overflow but not
* words, in layout terms, it affects ink overflow but not
* scrollable overflow.)
*/
virtual bool GetWidgetOverflow(nsDeviceContext* aContext, nsIFrame* aFrame,

Просмотреть файл

@ -1275,7 +1275,7 @@ nsRect AccessibleCaretManager::GetAllChildFrameRectsUnion(
for (const auto& childList : frame->ChildLists()) {
// Loop all children to union their scrollable overflow rect.
for (nsIFrame* child : childList.mList) {
nsRect childRect = child->GetScrollableOverflowRectRelativeToSelf();
nsRect childRect = child->ScrollableOverflowRectRelativeToSelf();
nsLayoutUtils::TransformRect(child, frame, childRect);
// A TextFrame containing only '\n' has positive height and width 0, or

Просмотреть файл

@ -4792,8 +4792,8 @@ UniquePtr<RangePaintInfo> PresShell::CreateRangePaintInfo(
// XXX deal with frame being null due to display:contents
for (; frame;
frame = nsLayoutUtils::GetNextContinuationOrIBSplitSibling(frame)) {
info->mBuilder.SetVisibleRect(frame->GetVisualOverflowRect());
info->mBuilder.SetDirtyRect(frame->GetVisualOverflowRect());
info->mBuilder.SetVisibleRect(frame->InkOverflowRect());
info->mBuilder.SetDirtyRect(frame->InkOverflowRect());
frame->BuildDisplayListForStackingContext(&info->mBuilder, &info->mList);
}
};
@ -5936,7 +5936,7 @@ void PresShell::MarkFramesInSubtreeApproximatelyVisible(
for (nsIFrame* child : list) {
nsRect r = rect - child->GetPosition();
if (!r.IntersectRect(r, child->GetVisualOverflowRect())) {
if (!r.IntersectRect(r, child->InkOverflowRect())) {
continue;
}
if (child->IsTransformed()) {
@ -5944,7 +5944,7 @@ void PresShell::MarkFramesInSubtreeApproximatelyVisible(
// rect
if (!preserves3DChildren ||
!child->Combines3DTransformWithAncestors()) {
const nsRect overflow = child->GetVisualOverflowRectRelativeToSelf();
const nsRect overflow = child->InkOverflowRectRelativeToSelf();
nsRect out;
if (nsDisplayTransform::UntransformRect(r, overflow, child, &out)) {
r = out;
@ -9617,7 +9617,7 @@ bool PresShell::DoReflow(nsIFrame* target, bool aInterruptible,
target->SetSize(boundsRelativeToTarget.Size());
// Always use boundsRelativeToTarget here, not
// desiredSize.GetVisualOverflowArea(), because for root frames (where they
// desiredSize.InkOverflowRect(), because for root frames (where they
// could be different, since root frames are allowed to have overflow) the
// root view bounds need to match the viewport bounds; the view manager
// "window dimensions" code depends on it.

Просмотреть файл

@ -335,13 +335,13 @@ nsRect nsCaret::GetGeometryForFrame(nsIFrame* aFrame, int32_t aFrameOffset,
// then snap it back, put it as close to the edge as it can.
if (vertical) {
nscoord overflow = caretInScroll.YMost() -
scrolled->GetVisualOverflowRectRelativeToSelf().height;
scrolled->InkOverflowRectRelativeToSelf().height;
if (overflow > 0) {
rect.y -= overflow;
}
} else {
nscoord overflow = caretInScroll.XMost() -
scrolled->GetVisualOverflowRectRelativeToSelf().width;
scrolled->InkOverflowRectRelativeToSelf().width;
if (overflow > 0) {
rect.x -= overflow;
}

Просмотреть файл

@ -2391,7 +2391,7 @@ nsIFrame* nsLayoutUtils::GetPopupFrameForEventCoordinates(
for (i = 0; i < popups.Length(); i++) {
nsIFrame* popup = popups[i];
if (popup->PresContext()->GetRootPresContext() == aPresContext &&
popup->GetScrollableOverflowRect().Contains(
popup->ScrollableOverflowRect().Contains(
GetEventCoordinatesRelativeTo(aEvent, RelativeTo{popup}))) {
return popup;
}
@ -3971,7 +3971,7 @@ nsresult nsLayoutUtils::PaintFrame(gfxContext* aRenderingContext,
builder->SetInActiveDocShell(isActive);
}
nsRect rootVisualOverflow = aFrame->GetVisualOverflowRectRelativeToSelf();
nsRect rootInkOverflow = aFrame->InkOverflowRectRelativeToSelf();
// If we are in a remote browser, then apply clipping from ancestor browsers
if (BrowserChild* browserChild = BrowserChild::GetFrom(presShell)) {
@ -3980,8 +3980,8 @@ nsresult nsLayoutUtils::PaintFrame(gfxContext* aRenderingContext,
if (unscaledVisibleRect) {
CSSRect visibleRect =
*unscaledVisibleRect / presContext->CSSToDevPixelScale();
rootVisualOverflow.IntersectRect(rootVisualOverflow,
CSSPixel::ToAppUnits(visibleRect));
rootInkOverflow.IntersectRect(rootInkOverflow,
CSSPixel::ToAppUnits(visibleRect));
}
}
@ -3990,7 +3990,7 @@ nsresult nsLayoutUtils::PaintFrame(gfxContext* aRenderingContext,
nsIScrollableFrame* rootScrollableFrame =
presShell->GetRootScrollFrameAsScrollable();
MOZ_ASSERT(rootScrollableFrame);
nsRect displayPortBase = rootVisualOverflow;
nsRect displayPortBase = rootInkOverflow;
nsRect temp = displayPortBase;
Unused << rootScrollableFrame->DecideScrollableLayer(
builder, &displayPortBase, &temp,
@ -4005,7 +4005,7 @@ nsresult nsLayoutUtils::PaintFrame(gfxContext* aRenderingContext,
// |ignoreViewportScrolling| and |usingDisplayPort| are persistent
// document-rendering state. We rely on PresShell to flush
// retained layers as needed when that persistent state changes.
visibleRegion = rootVisualOverflow;
visibleRegion = rootInkOverflow;
} else {
visibleRegion = aDirtyRegion;
}
@ -6646,7 +6646,7 @@ nscoord nsLayoutUtils::CalculateContentBEnd(WritingMode aWM, nsIFrame* aFrame) {
// We want scrollable overflow rather than visual because this
// calculation is intended to affect layout.
LogicalSize overflowSize(aWM, aFrame->GetScrollableOverflowRect().Size());
LogicalSize overflowSize(aWM, aFrame->ScrollableOverflowRect().Size());
if (overflowSize.BSize(aWM) > contentBEnd) {
nsIFrame::ChildListIDs skip = {nsIFrame::kOverflowList,
nsIFrame::kExcessOverflowContainersList,

Просмотреть файл

@ -2624,7 +2624,7 @@ void nsRootPresContext::ComputePluginGeometryUpdates(
// again. nsDisplayScroll(Info)Layer doesn't support trying to flatten
// again.
aBuilder->SetAllowMergingAndFlattening(false);
nsRegion region = rootFrame->GetVisualOverflowRectRelativeToSelf();
nsRegion region = rootFrame->InkOverflowRectRelativeToSelf();
// nsDisplayPlugin::ComputeVisibility will automatically set a non-hidden
// widget configuration for the plugin, if it's visible.
aList->ComputeVisibilityForRoot(aBuilder, &region);

Просмотреть файл

@ -87,7 +87,7 @@ class nsDisplayButtonBoxShadowOuter : public nsPaintedDisplayItem {
nsRect nsDisplayButtonBoxShadowOuter::GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap) const {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
void nsDisplayButtonBoxShadowOuter::Paint(nsDisplayListBuilder* aBuilder,
@ -292,8 +292,7 @@ nsRect nsDisplayButtonBorder::GetBounds(nsDisplayListBuilder* aBuilder,
*aSnap = false;
return aBuilder->IsForEventDelivery()
? nsRect(ToReferenceFrame(), mFrame->GetSize())
: mFrame->GetVisualOverflowRectRelativeToSelf() +
ToReferenceFrame();
: mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
class nsDisplayButtonForeground final : public nsPaintedDisplayItem {

Просмотреть файл

@ -157,7 +157,7 @@ nsRect nsDisplayFieldSetBorder::GetBounds(nsDisplayListBuilder* aBuilder,
// nsDisplayBorder has here, but keeping things in sync would be a pain, and
// this code is not typically performance-sensitive.
*aSnap = false;
return Frame()->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return Frame()->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
bool nsDisplayFieldSetBorder::CreateWebRenderCommands(
@ -187,7 +187,7 @@ bool nsDisplayFieldSetBorder::CreateWebRenderCommands(
// We need to clip out the part of the border where the legend would go
auto appUnitsPerDevPixel = frame->PresContext()->AppUnitsPerDevPixel();
auto layoutRect = wr::ToLayoutRect(LayoutDeviceRect::FromAppUnits(
frame->GetVisualOverflowRectRelativeToSelf() + offset,
frame->InkOverflowRectRelativeToSelf() + offset,
appUnitsPerDevPixel));
wr::ComplexClipRegion region;
@ -309,17 +309,16 @@ image::ImgDrawResult nsFieldSetFrame::PaintBorder(
// We set up a clip path which has our rect clockwise and the legend rect
// counterclockwise, with FILL_WINDING as the fill rule. That will allow us
// to paint within our rect but outside the legend rect. For "our rect" we
// use our visual overflow rect (relative to ourselves, so it's not affected
// use our ink overflow rect (relative to ourselves, so it's not affected
// by transforms), because we can have borders sticking outside our border
// box (e.g. due to border-image-outset).
RefPtr<PathBuilder> pathBuilder =
drawTarget->CreatePathBuilder(FillRule::FILL_WINDING);
int32_t appUnitsPerDevPixel = presContext->AppUnitsPerDevPixel();
AppendRectToPath(
pathBuilder,
NSRectToSnappedRect(GetVisualOverflowRectRelativeToSelf() + aPt,
appUnitsPerDevPixel, *drawTarget),
true);
AppendRectToPath(pathBuilder,
NSRectToSnappedRect(InkOverflowRectRelativeToSelf() + aPt,
appUnitsPerDevPixel, *drawTarget),
true);
AppendRectToPath(
pathBuilder,
NSRectToSnappedRect(legendRect, appUnitsPerDevPixel, *drawTarget),

Просмотреть файл

@ -114,7 +114,7 @@ class nsDisplayListFocus : public nsPaintedDisplayItem {
// override bounds because the list item focus ring may extend outside
// the nsSelectsAreaFrame
nsListControlFrame* listFrame = GetEnclosingListFrame(Frame());
return listFrame->GetVisualOverflowRectRelativeToSelf() +
return listFrame->InkOverflowRectRelativeToSelf() +
listFrame->GetOffsetToCrossDoc(ReferenceFrame());
}
virtual void Paint(nsDisplayListBuilder* aBuilder,

Просмотреть файл

@ -11,7 +11,7 @@
void nsOverflowAreas::UnionWith(const nsOverflowAreas& aOther) {
// FIXME: We should probably change scrollable overflow to use
// UnionRectIncludeEmpty (but leave visual overflow using UnionRect).
// UnionRectIncludeEmpty (but leave ink overflow using UnionRect).
NS_FOR_FRAME_OVERFLOW_TYPES(otype) {
mRects[otype].UnionRect(mRects[otype], aOther.mRects[otype]);
}
@ -19,7 +19,7 @@ void nsOverflowAreas::UnionWith(const nsOverflowAreas& aOther) {
void nsOverflowAreas::UnionAllWith(const nsRect& aRect) {
// FIXME: We should probably change scrollable overflow to use
// UnionRectIncludeEmpty (but leave visual overflow using UnionRect).
// UnionRectIncludeEmpty (but leave ink overflow using UnionRect).
NS_FOR_FRAME_OVERFLOW_TYPES(otype) {
mRects[otype].UnionRect(mRects[otype], aRect);
}
@ -42,7 +42,7 @@ void ReflowOutput::SetOverflowAreasToDesiredBounds() {
void ReflowOutput::UnionOverflowAreasWithDesiredBounds() {
// FIXME: We should probably change scrollable overflow to use
// UnionRectIncludeEmpty (but leave visual overflow using UnionRect).
// UnionRectIncludeEmpty (but leave ink overflow using UnionRect).
nsRect rect(0, 0, Width(), Height());
NS_FOR_FRAME_OVERFLOW_TYPES(otype) {
nsRect& o = mOverflowAreas.Overflow(otype);

Просмотреть файл

@ -27,11 +27,7 @@ struct ReflowInput;
* that 2 is a valid value of nsOverflowType for use in
* NS_FOR_FRAME_OVERFLOW_TYPES.
*/
enum nsOverflowType {
eVisualOverflow,
eScrollableOverflow,
eOverflowType_LENGTH
};
enum nsOverflowType { eInkOverflow, eScrollableOverflow, eOverflowType_LENGTH };
#define NS_FOR_FRAME_OVERFLOW_TYPES(var_) \
for (nsOverflowType var_ = nsOverflowType(0); var_ < 2; \
@ -51,8 +47,8 @@ struct nsOverflowAreas {
return mRects[aIndex];
}
nsRect& VisualOverflow() { return mRects[eVisualOverflow]; }
const nsRect& VisualOverflow() const { return mRects[eVisualOverflow]; }
nsRect& InkOverflow() { return mRects[eInkOverflow]; }
const nsRect& InkOverflow() const { return mRects[eInkOverflow]; }
nsRect& ScrollableOverflow() { return mRects[eScrollableOverflow]; }
const nsRect& ScrollableOverflow() const {
@ -63,9 +59,9 @@ struct nsOverflowAreas {
// default-initializes to zero due to nsRect's default constructor
}
nsOverflowAreas(const nsRect& aVisualOverflow,
nsOverflowAreas(const nsRect& aInkOverflow,
const nsRect& aScrollableOverflow) {
mRects[eVisualOverflow] = aVisualOverflow;
mRects[eInkOverflow] = aInkOverflow;
mRects[eScrollableOverflow] = aScrollableOverflow;
}
@ -78,9 +74,9 @@ struct nsOverflowAreas {
}
bool operator==(const nsOverflowAreas& aOther) const {
// Scrollable overflow is a point-set rectangle and visual overflow
// Scrollable overflow is a point-set rectangle and ink overflow
// is a pixel-set rectangle.
return VisualOverflow().IsEqualInterior(aOther.VisualOverflow()) &&
return InkOverflow().IsEqualInterior(aOther.InkOverflow()) &&
ScrollableOverflow().IsEqualEdges(aOther.ScrollableOverflow());
}
@ -265,10 +261,8 @@ class ReflowOutput {
// width, height}.
nsOverflowAreas mOverflowAreas;
nsRect& VisualOverflow() { return mOverflowAreas.VisualOverflow(); }
const nsRect& VisualOverflow() const {
return mOverflowAreas.VisualOverflow();
}
nsRect& InkOverflow() { return mOverflowAreas.InkOverflow(); }
const nsRect& InkOverflow() const { return mOverflowAreas.InkOverflow(); }
nsRect& ScrollableOverflow() { return mOverflowAreas.ScrollableOverflow(); }
const nsRect& ScrollableOverflow() const {
return mOverflowAreas.ScrollableOverflow();

Просмотреть файл

@ -151,7 +151,7 @@ static nsRect FindScrollAnchoringBoundingRect(const nsIFrame* aScrollFrame,
for (nsIFrame* continuation = aCandidate->FirstContinuation(); continuation;
continuation = continuation->GetNextContinuation()) {
nsRect overflowRect =
continuation->GetScrollableOverflowRectRelativeToSelf();
continuation->ScrollableOverflowRectRelativeToSelf();
overflowRect += continuation->GetOffsetTo(blockAncestor);
bounding = bounding.Union(overflowRect);
}
@ -160,7 +160,7 @@ static nsRect FindScrollAnchoringBoundingRect(const nsIFrame* aScrollFrame,
}
nsRect borderRect = aCandidate->GetRectRelativeToSelf();
nsRect overflowRect = aCandidate->GetScrollableOverflowRectRelativeToSelf();
nsRect overflowRect = aCandidate->ScrollableOverflowRectRelativeToSelf();
NS_ASSERTION(overflowRect.Contains(borderRect),
"overflow rect must include border rect, and the clamping logic "

Просмотреть файл

@ -190,7 +190,7 @@ void StickyScrollContainer::ComputeStickyLimits(nsIFrame* aFrame,
// cbFrame is the scrolledFrame, and it won't have continuations. Unlike the
// else clause, we consider scrollable overflow rect because and the union
// of its in-flow rects doesn't include the scrollable overflow area.
*aContain = cbFrame->GetScrollableOverflowRectRelativeToSelf();
*aContain = cbFrame->ScrollableOverflowRectRelativeToSelf();
nsLayoutUtils::TransformRect(cbFrame, aFrame->GetParent(), *aContain);
} else {
*aContain = nsLayoutUtils::GetAllInFlowRectsUnion(

Просмотреть файл

@ -553,8 +553,7 @@ LogicalRect TextOverflow::ExamineLineFrames(nsLineBox* aLine,
}
}
LogicalRect lineRect(mBlockWM, aLine->GetScrollableOverflowArea(),
mBlockSize);
LogicalRect lineRect(mBlockWM, aLine->ScrollableOverflowRect(), mBlockSize);
const bool istartWantsMarker =
!suppressIStart &&
lineRect.IStart(mBlockWM) < contentArea.IStart(mBlockWM);

Просмотреть файл

@ -140,7 +140,7 @@ class TextOverflow final {
nsIFrame* aFrame) const {
return LogicalRect(
mBlockWM,
aFrame->GetScrollableOverflowRect() + aFrame->GetOffsetTo(mBlock),
aFrame->ScrollableOverflowRect() + aFrame->GetOffsetTo(mBlock),
mBlockSize);
}

Просмотреть файл

@ -195,7 +195,7 @@ void nsAbsoluteContainingBlock::Reflow(nsContainerFrame* aDelegatingFrame,
nscoord kidOverflowBEnd =
LogicalRect(containerWM,
// Use ...RelativeToSelf to ignore transforms
kidFrame->GetScrollableOverflowRectRelativeToSelf() +
kidFrame->ScrollableOverflowRectRelativeToSelf() +
kidFrame->GetPosition(),
aContainingBlock.Size())
.BEnd(containerWM);
@ -790,7 +790,7 @@ void nsAbsoluteContainingBlock::ReflowAbsoluteFrame(
// Size and position the view and set its opacity, visibility, content
// transparency, and clip
nsContainerFrame::SyncFrameViewAfterReflow(aPresContext, aKidFrame, view,
kidDesiredSize.VisualOverflow());
kidDesiredSize.InkOverflow());
} else {
nsContainerFrame::PositionChildViews(aKidFrame);
}

Просмотреть файл

@ -167,7 +167,7 @@ static bool LineHasVisibleInlineContent(nsLineBox* aLine) {
/**
* Iterates through the frame's in-flow children and
* unions the visual overflow of all text frames which
* unions the ink overflow of all text frames which
* participate in the line aFrame belongs to.
* If a child of aFrame is not a text frame,
* we recurse with the child as the aFrame argument.
@ -179,7 +179,7 @@ static nsRect GetFrameTextArea(nsIFrame* aFrame,
nsDisplayListBuilder* aBuilder) {
nsRect textArea;
if (aFrame->IsTextFrame()) {
textArea = aFrame->GetVisualOverflowRect();
textArea = aFrame->InkOverflowRect();
} else if (aFrame->IsFrameOfType(nsIFrame::eLineParticipant)) {
for (nsIFrame* kid : aFrame->PrincipalChildList()) {
nsRect kidTextArea = GetFrameTextArea(kid, aBuilder);
@ -192,8 +192,8 @@ static nsRect GetFrameTextArea(nsIFrame* aFrame,
/**
* Iterates through the line's children and
* unions the visual overflow of all text frames.
* GetFrameTextArea unions and returns the visual overflow
* unions the ink overflow of all text frames.
* GetFrameTextArea unions and returns the ink overflow
* from all line-participating text frames within the given child.
* The nsRect returned from GetLineTextArea is offset
* relative to the given line.
@ -916,7 +916,7 @@ nscoord nsBlockFrame::GetPrefISize(gfxContext* aRenderingContext) {
nsRect nsBlockFrame::ComputeTightBounds(DrawTarget* aDrawTarget) const {
// be conservative
if (Style()->HasTextDecorationLines()) {
return GetVisualOverflowRect();
return InkOverflowRect();
}
return ComputeSimpleTightBounds(aDrawTarget);
}
@ -1291,7 +1291,7 @@ void nsBlockFrame::Reflow(nsPresContext* aPresContext, ReflowOutput& aMetrics,
// OK, some lines may be reflowed. Blow away any saved line cursor
// because we may invalidate the nondecreasing
// overflowArea.VisualOverflow().y/yMost invariant, and we may even
// overflowArea.InkOverflow().y/yMost invariant, and we may even
// delete the line with the line cursor.
ClearLineCursor();
@ -1628,9 +1628,9 @@ void nsBlockFrame::Reflow(nsPresContext* aPresContext, ReflowOutput& aMetrics,
ToString(aStatus).c_str(), aMetrics.ISize(parentWM),
aMetrics.BSize(parentWM), aMetrics.mCarriedOutBEndMargin.get());
if (HasOverflowAreas()) {
printf(" overflow-vis={%d,%d,%d,%d}", aMetrics.VisualOverflow().x,
aMetrics.VisualOverflow().y, aMetrics.VisualOverflow().width,
aMetrics.VisualOverflow().height);
printf(" overflow-vis={%d,%d,%d,%d}", aMetrics.InkOverflow().x,
aMetrics.InkOverflow().y, aMetrics.InkOverflow().width,
aMetrics.InkOverflow().height);
printf(" overflow-scr={%d,%d,%d,%d}", aMetrics.ScrollableOverflow().x,
aMetrics.ScrollableOverflow().y,
aMetrics.ScrollableOverflow().width,
@ -2046,12 +2046,12 @@ void nsBlockFrame::ComputeOverflowAreas(const nsRect& aBounds,
for (const auto& line : Lines()) {
if (aDisplay->IsContainLayout()) {
// If we have layout containment, we should only consider our child's
// visual overflow, leaving the scrollable regions of the parent
// ink overflow, leaving the scrollable regions of the parent
// unaffected.
// Note: scrollable overflow is a subset of visual overflow,
// Note: scrollable overflow is a subset of ink overflow,
// so this has the same affect as unioning the child's visual and
// scrollable overflow with its parent's visual overflow.
nsRect childVisualRect = line.GetVisualOverflowArea();
// scrollable overflow with its parent's ink overflow.
nsRect childVisualRect = line.InkOverflowRect();
nsOverflowAreas childVisualArea =
nsOverflowAreas(childVisualRect, nsRect());
areas.UnionWith(childVisualArea);
@ -2075,8 +2075,8 @@ void nsBlockFrame::ComputeOverflowAreas(const nsRect& aBounds,
#ifdef NOISY_COMBINED_AREA
ListTag(stdout);
const nsRect& vis = areas.VisualOverflow();
printf(": VisualOverflowArea CA=%d,%d,%d,%d\n", vis.x, vis.y, vis.width,
const nsRect& vis = areas.InkOverflow();
printf(": InkOverflowArea CA=%d,%d,%d,%d\n", vis.x, vis.y, vis.width,
vis.height);
const nsRect& scr = areas.ScrollableOverflow();
printf(": ScrollableOverflowArea CA=%d,%d,%d,%d\n", scr.x, scr.y, scr.width,
@ -2394,8 +2394,8 @@ static void DumpLine(const BlockReflowInput& aState, nsLineBox* aLine,
nscoord aDeltaBCoord, int32_t aDeltaIndent) {
#ifdef DEBUG
if (nsBlockFrame::gNoisyReflow) {
nsRect ovis(aLine->GetVisualOverflowArea());
nsRect oscr(aLine->GetScrollableOverflowArea());
nsRect ovis(aLine->InkOverflowRect());
nsRect oscr(aLine->ScrollableOverflowRect());
nsBlockFrame::IndentBy(stdout, nsBlockFrame::gNoiseIndent + aDeltaIndent);
printf(
"line=%p mBCoord=%d dirty=%s oldBounds={%d,%d,%d,%d} "
@ -6238,9 +6238,9 @@ void nsBlockFrame::DoRemoveFrameInternal(nsIFrame* aDeletedFrame,
// a call to RemoveFrame(), but we may not need to do this in all
// cases...
#ifdef NOISY_BLOCK_INVALIDATE
nsRect visOverflow(cur->GetVisualOverflowArea());
printf("%p invalidate 10 (%d, %d, %d, %d)\n", this, visOverflow.x,
visOverflow.y, visOverflow.width, visOverflow.height);
nsRect inkOverflow(cur->InkOverflowRect());
printf("%p invalidate 10 (%d, %d, %d, %d)\n", this, inkOverflow.x,
inkOverflow.y, inkOverflow.width, inkOverflow.height);
#endif
} else {
line = overflowLines->mLines.erase(line);
@ -6605,8 +6605,8 @@ void nsBlockFrame::ReflowFloat(BlockReflowInput& aState,
aFloat->SetSize(metricsWM, metrics.Size(metricsWM));
if (aFloat->HasView()) {
nsContainerFrame::SyncFrameViewAfterReflow(
aState.mPresContext, aFloat, aFloat->GetView(),
metrics.VisualOverflow(), ReflowChildFlags::NoMoveView);
aState.mPresContext, aFloat, aFloat->GetView(), metrics.InkOverflow(),
ReflowChildFlags::NoMoveView);
}
// Pass floatRS so the frame hierarchy can be used (redoFloatRS has the same
// hierarchy)
@ -6761,18 +6761,18 @@ void nsBlockFrame::RecoverFloatsFor(nsIFrame* aFrame,
// Painting, event handling
#ifdef DEBUG
static void ComputeVisualOverflowArea(nsLineList& aLines, nscoord aWidth,
nscoord aHeight, nsRect& aResult) {
static void ComputeInkOverflowArea(nsLineList& aLines, nscoord aWidth,
nscoord aHeight, nsRect& aResult) {
nscoord xa = 0, ya = 0, xb = aWidth, yb = aHeight;
for (nsLineList::iterator line = aLines.begin(), line_end = aLines.end();
line != line_end; ++line) {
// Compute min and max x/y values for the reflowed frame's
// combined areas
nsRect visOverflow(line->GetVisualOverflowArea());
nscoord x = visOverflow.x;
nscoord y = visOverflow.y;
nscoord xmost = x + visOverflow.width;
nscoord ymost = y + visOverflow.height;
nsRect inkOverflow(line->InkOverflowRect());
nscoord x = inkOverflow.x;
nscoord y = inkOverflow.y;
nscoord xmost = x + inkOverflow.width;
nscoord ymost = y + inkOverflow.height;
if (x < xa) {
xa = x;
}
@ -6798,7 +6798,7 @@ static void ComputeVisualOverflowArea(nsLineList& aLines, nscoord aWidth,
static void DebugOutputDrawLine(int32_t aDepth, nsLineBox* aLine, bool aDrawn) {
if (nsBlockFrame::gNoisyDamageRepair) {
nsIFrame::IndentBy(stdout, aDepth + 1);
nsRect lineArea = aLine->GetVisualOverflowArea();
nsRect lineArea = aLine->InkOverflowRect();
printf("%s line=%p bounds=%d,%d,%d,%d ca=%d,%d,%d,%d\n",
aDrawn ? "draw" : "skip", static_cast<void*>(aLine), aLine->IStart(),
aLine->BStart(), aLine->ISize(), aLine->BSize(), lineArea.x,
@ -6818,7 +6818,7 @@ static void DisplayLine(nsDisplayListBuilder* aBuilder,
aDrawnLines++;
}
const bool intersect =
aLine->GetVisualOverflowArea().Intersects(aBuilder->GetDirtyRect());
aLine->InkOverflowRect().Intersects(aBuilder->GetDirtyRect());
DebugOutputDrawLine(aDepth, aLine.get(), intersect);
#endif
@ -6862,7 +6862,7 @@ void nsBlockFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
nsRect dirty = aBuilder->GetDirtyRect();
depth = GetDepth();
nsRect ca;
::ComputeVisualOverflowArea(mLines, mRect.width, mRect.height, ca);
::ComputeInkOverflowArea(mLines, mRect.width, mRect.height, ca);
nsIFrame::IndentBy(stdout, depth);
ListTag(stdout);
printf(": bounds=%d,%d,%d,%d dirty(absolute)=%d,%d,%d,%d ca=%d,%d,%d,%d\n",
@ -6958,7 +6958,7 @@ void nsBlockFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
if (cursor) {
for (LineIterator line = mLines.begin(cursor); line != line_end; ++line) {
const nsRect lineArea = line->GetVisualOverflowArea();
const nsRect lineArea = line->InkOverflowRect();
if (!lineArea.IsEmpty()) {
// Because we have a cursor, the combinedArea.ys are non-decreasing.
// Once we've passed aDirtyRect.YMost(), we can never see it again.
@ -6995,7 +6995,7 @@ void nsBlockFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
};
for (LineIterator line = LinesBegin(); line != line_end; ++line) {
const nsRect lineArea = line->GetVisualOverflowArea();
const nsRect lineArea = line->InkOverflowRect();
const bool lineInLine = line->IsInline();
if ((lineInLine && textOverflowPtr) || ShouldDescendIntoLine(lineArea)) {
@ -7133,17 +7133,17 @@ nsLineBox* nsBlockFrame::GetFirstLineContaining(nscoord y) {
nsLineBox* property = GetProperty(LineCursorProperty());
LineIterator cursor = mLines.begin(property);
nsRect cursorArea = cursor->GetVisualOverflowArea();
nsRect cursorArea = cursor->InkOverflowRect();
while ((cursorArea.IsEmpty() || cursorArea.YMost() > y) &&
cursor != mLines.front()) {
cursor = cursor.prev();
cursorArea = cursor->GetVisualOverflowArea();
cursorArea = cursor->InkOverflowRect();
}
while ((cursorArea.IsEmpty() || cursorArea.YMost() <= y) &&
cursor != mLines.back()) {
cursor = cursor.next();
cursorArea = cursor->GetVisualOverflowArea();
cursorArea = cursor->InkOverflowRect();
}
if (cursor.get() != property) {

Просмотреть файл

@ -181,10 +181,10 @@ class nsBlockFrame : public nsContainerFrame {
// as a cache for local computation. Use AutoLineCursorSetup for the
// latter case so that it wouldn't interact unexpectedly with the
// former. The basic idea for the former is that we set the cursor
// property if the lines' overflowArea.VisualOverflow().ys and
// overflowArea.VisualOverflow().yMosts are non-decreasing
// (considering only non-empty overflowArea.VisualOverflow()s; empty
// overflowArea.VisualOverflow()s never participate in event handling
// property if the lines' overflowArea.InkOverflow().ys and
// overflowArea.InkOverflow().yMosts are non-decreasing
// (considering only non-empty overflowArea.InkOverflow()s; empty
// overflowArea.InkOverflow()s never participate in event handling
// or painting), and the block has sufficient number of lines. The
// cursor property points to a "recently used" line. If we get a
// series of requests that work on lines

Просмотреть файл

@ -549,7 +549,7 @@ class nsDisplayBullet final : public nsPaintedDisplayItem {
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap) const override {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
virtual bool CreateWebRenderCommands(

Просмотреть файл

@ -298,7 +298,7 @@ void nsCanvasFrame::RemoveFrame(ChildListID aListID, nsIFrame* aOldFrame) {
nsRect nsCanvasFrame::CanvasArea() const {
// Not clear which overflow rect we want here, but it probably doesn't
// matter.
nsRect result(GetVisualOverflowRect());
nsRect result(InkOverflowRect());
nsIScrollableFrame* scrollableFrame = do_QueryFrame(GetParent());
if (scrollableFrame) {

Просмотреть файл

@ -32,7 +32,7 @@ class nsDisplayColumnRule : public nsPaintedDisplayItem {
MOZ_COUNTED_DTOR_OVERRIDE(nsDisplayColumnRule)
/**
* Returns the frame's visual overflow rect instead of the frame's bounds.
* Returns the frame's ink overflow rect instead of the frame's bounds.
*/
nsRect GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) const override {
*aSnap = false;
@ -601,14 +601,12 @@ nsColumnSetFrame::ColumnBalanceData nsColumnSetFrame::ReflowChildren(
if (skipIncremental && shrinkingBSize) {
switch (wm.GetBlockDir()) {
case WritingMode::eBlockTB:
if (child->GetScrollableOverflowRect().YMost() >
aConfig.mColMaxBSize) {
if (child->ScrollableOverflowRect().YMost() > aConfig.mColMaxBSize) {
skipIncremental = false;
}
break;
case WritingMode::eBlockLR:
if (child->GetScrollableOverflowRect().XMost() >
aConfig.mColMaxBSize) {
if (child->ScrollableOverflowRect().XMost() > aConfig.mColMaxBSize) {
skipIncremental = false;
}
break;

Просмотреть файл

@ -839,9 +839,10 @@ void nsContainerFrame::SetSizeConstraints(nsPresContext* aPresContext,
aWidget->SetSizeConstraints(constraints);
}
void nsContainerFrame::SyncFrameViewAfterReflow(
nsPresContext* aPresContext, nsIFrame* aFrame, nsView* aView,
const nsRect& aVisualOverflowArea, ReflowChildFlags aFlags) {
void nsContainerFrame::SyncFrameViewAfterReflow(nsPresContext* aPresContext,
nsIFrame* aFrame, nsView* aView,
const nsRect& aInkOverflowArea,
ReflowChildFlags aFlags) {
if (!aView) {
return;
}
@ -854,7 +855,7 @@ void nsContainerFrame::SyncFrameViewAfterReflow(
if (!(aFlags & ReflowChildFlags::NoSizeView)) {
nsViewManager* vm = aView->GetViewManager();
vm->ResizeView(aView, aVisualOverflowArea, true);
vm->ResizeView(aView, aInkOverflowArea, true);
}
}
@ -1056,7 +1057,7 @@ void nsContainerFrame::ReflowChild(
NS_ASSERTION(aContainerSize.width != NS_UNCONSTRAINEDSIZE,
"ReflowChild with unconstrained container width!");
}
MOZ_ASSERT(aDesiredSize.VisualOverflow() == nsRect(0, 0, 0, 0) &&
MOZ_ASSERT(aDesiredSize.InkOverflow() == nsRect(0, 0, 0, 0) &&
aDesiredSize.ScrollableOverflow() == nsRect(0, 0, 0, 0),
"please reset the overflow areas before calling ReflowChild");
@ -1213,7 +1214,7 @@ void nsContainerFrame::FinishReflowChild(
// Make sure the frame's view is properly sized and positioned and has
// things like opacity correct
SyncFrameViewAfterReflow(aPresContext, aKidFrame, view,
aDesiredSize.VisualOverflow(), aFlags);
aDesiredSize.InkOverflow(), aFlags);
}
nsPoint newOrigin = aKidFrame->GetPosition();
@ -1259,7 +1260,7 @@ void nsContainerFrame::FinishReflowChild(nsIFrame* aKidFrame,
// Make sure the frame's view is properly sized and positioned and has
// things like opacity correct
SyncFrameViewAfterReflow(aPresContext, aKidFrame, view,
aDesiredSize.VisualOverflow(), aFlags);
aDesiredSize.InkOverflow(), aFlags);
}
if (!(aFlags & ReflowChildFlags::NoMoveView) && curOrigin != pos) {
@ -2815,7 +2816,7 @@ nsRect nsContainerFrame::ComputeSimpleTightBounds(
StyleDisplay()->HasAppearance()) {
// Not necessarily tight, due to clipping, negative
// outline-offset, and lots of other issues, but that's OK
return GetVisualOverflowRect();
return InkOverflowRect();
}
nsRect r(0, 0, 0, 0);
@ -2886,10 +2887,10 @@ void nsContainerFrame::ConsiderChildOverflow(nsOverflowAreas& aOverflowAreas,
// If we have layout containment and are not a non-atomic, inline-level
// principal box, we should only consider our child's visual (ink) overflow,
// leaving the scrollable regions of the parent unaffected.
// Note: scrollable overflow is a subset of visual overflow,
// Note: scrollable overflow is a subset of ink overflow,
// so this has the same affect as unioning the child's visual and
// scrollable overflow with the parent's visual overflow.
nsRect childVisual = aChildFrame->GetVisualOverflowRect();
// scrollable overflow with the parent's ink overflow.
nsRect childVisual = aChildFrame->InkOverflowRect();
nsOverflowAreas combined = nsOverflowAreas(childVisual, nsRect());
aOverflowAreas.UnionWith(combined + aChildFrame->GetPosition());
} else {

Просмотреть файл

@ -182,7 +182,7 @@ class nsContainerFrame : public nsSplittableFrame {
// Set the view's size and position after its frame has been reflowed.
static void SyncFrameViewAfterReflow(
nsPresContext* aPresContext, nsIFrame* aFrame, nsView* aView,
const nsRect& aVisualOverflowArea,
const nsRect& aInkOverflowArea,
ReflowChildFlags aFlags = ReflowChildFlags::Default);
// Syncs properties to the top level view and window, like transparency and

Просмотреть файл

@ -1035,7 +1035,7 @@ static void GetScrollableOverflowForPerspective(
// TODO: Can we reuse the reference box?
TransformReferenceBox refBox(child);
preScroll = nsDisplayTransform::TransformRect(
child->GetScrollableOverflowRectRelativeToSelf(), child, refBox);
child->ScrollableOverflowRectRelativeToSelf(), child, refBox);
}
// Temporarily override the scroll position of the scrolled frame by
@ -1046,7 +1046,7 @@ static void GetScrollableOverflowForPerspective(
aScrolledFrame->SetPosition(scrollPos + nsPoint(600, 600));
TransformReferenceBox refBox(child);
postScroll = nsDisplayTransform::TransformRect(
child->GetScrollableOverflowRectRelativeToSelf(), child, refBox);
child->ScrollableOverflowRectRelativeToSelf(), child, refBox);
aScrolledFrame->SetPosition(scrollPos);
}
@ -1095,7 +1095,7 @@ static void GetScrollableOverflowForPerspective(
} else if (aCurrentFrame == aScrolledFrame) {
aScrolledFrameOverflowArea.UnionRect(
aScrolledFrameOverflowArea,
child->GetScrollableOverflowRectRelativeToParent());
child->ScrollableOverflowRectRelativeToParent());
}
}
}
@ -1191,7 +1191,7 @@ void nsHTMLScrollFrame::Reflow(nsPresContext* aPresContext,
nsRect oldScrollAreaBounds = mHelper.mScrollPort;
nsRect oldScrolledAreaBounds =
mHelper.mScrolledFrame->GetScrollableOverflowRectRelativeToParent();
mHelper.mScrolledFrame->ScrollableOverflowRectRelativeToParent();
nsPoint oldScrollPosition = mHelper.GetScrollPosition();
state.mComputedBorder = aReflowInput.ComputedPhysicalBorderPadding() -
@ -1227,7 +1227,7 @@ void nsHTMLScrollFrame::Reflow(nsPresContext* aPresContext,
mHelper.mHasVerticalScrollbar = state.mShowVScrollbar;
nsRect newScrollAreaBounds = mHelper.mScrollPort;
nsRect newScrolledAreaBounds =
mHelper.mScrolledFrame->GetScrollableOverflowRectRelativeToParent();
mHelper.mScrolledFrame->ScrollableOverflowRectRelativeToParent();
if (mHelper.mSkippedScrollbarLayout || reflowHScrollbar || reflowVScrollbar ||
reflowScrollCorner || HasAnyStateBits(NS_FRAME_IS_DIRTY) ||
didHaveHScrollbar != state.mShowHScrollbar ||
@ -3277,14 +3277,14 @@ void ScrollFrameHelper::AppendScrollPartsTo(nsDisplayListBuilder* aBuilder,
// zoomable, and where the scrollbar sizes are bounded by the widget.
const nsRect visible =
mIsRoot && mOuter->PresContext()->IsRootContentDocument()
? scrollParts[i]->GetVisualOverflowRectRelativeToParent()
? scrollParts[i]->InkOverflowRectRelativeToParent()
: aBuilder->GetVisibleRect();
if (visible.IsEmpty()) {
continue;
}
const nsRect dirty =
mIsRoot && mOuter->PresContext()->IsRootContentDocument()
? scrollParts[i]->GetVisualOverflowRectRelativeToParent()
? scrollParts[i]->InkOverflowRectRelativeToParent()
: aBuilder->GetDirtyRect();
// Always create layers for overlay scrollbars so that we don't create a
@ -3642,7 +3642,7 @@ void ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
// We only clip if there is *scrollable* overflow, to avoid clipping
// *visual* overflow unnecessarily.
nsRect clipRect = effectiveScrollPort + aBuilder->ToReferenceFrame(mOuter);
nsRect so = mScrolledFrame->GetScrollableOverflowRect();
nsRect so = mScrolledFrame->ScrollableOverflowRect();
if ((cbH && (clipRect.width != so.width || so.x < 0)) ||
(cbV && (clipRect.height != so.height || so.y < 0))) {
nsMargin padding = mOuter->GetUsedPadding();
@ -3776,7 +3776,7 @@ void ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
DisplayListClipState::AutoSaveRestore scrolledRectClipState(aBuilder);
nsRect scrolledRectClip =
GetUnsnappedScrolledRectInternal(
mScrolledFrame->GetScrollableOverflowRect(), mScrollPort.Size()) +
mScrolledFrame->ScrollableOverflowRect(), mScrollPort.Size()) +
mScrolledFrame->GetPosition();
bool clippedToDisplayPort = false;
if (mWillBuildScrollableLayer && aBuilder->IsPaintingToWindow()) {
@ -6614,7 +6614,7 @@ static nscoord SnapCoord(nscoord aCoord, double aRes,
nsRect ScrollFrameHelper::GetScrolledRect() const {
nsRect result = GetUnsnappedScrolledRectInternal(
mScrolledFrame->GetScrollableOverflowRect(), mScrollPort.Size());
mScrolledFrame->ScrollableOverflowRect(), mScrollPort.Size());
if (result.width < mScrollPort.width) {
NS_WARNING("Scrolled rect smaller than scrollport?");
@ -6869,7 +6869,7 @@ void ScrollFrameHelper::FireScrolledAreaEvent() {
nsPresContext* prescontext = mOuter->PresContext();
nsIContent* content = mOuter->GetContent();
event.mArea = mScrolledFrame->GetScrollableOverflowRectRelativeToParent();
event.mArea = mScrolledFrame->ScrollableOverflowRectRelativeToParent();
if (Document* doc = content->GetUncomposedDoc()) {
EventDispatcher::Dispatch(ToSupports(doc), prescontext, &event, nullptr);
}

Просмотреть файл

@ -2447,7 +2447,7 @@ void nsIFrame::DisplayOutlineUnconditional(nsDisplayListBuilder* aBuilder,
}
if (HasAnyStateBits(NS_FRAME_PART_OF_IBSPLIT) &&
GetScrollableOverflowRect().IsEmpty()) {
ScrollableOverflowRect().IsEmpty()) {
// Skip parts of IB-splits with an empty overflow rect, see bug 434301.
// We may still want to fix some of the overflow area calculations over in
// that bug.
@ -3166,7 +3166,7 @@ void nsIFrame::BuildDisplayListForStackingContext(
aBuilder->SavePreserves3DAllowAsyncAnimation(false);
}
const nsRect overflow = GetVisualOverflowRectRelativeToSelf();
const nsRect overflow = InkOverflowRectRelativeToSelf();
if (overflow.IsEmpty() && !extend3DContext) {
return;
}
@ -3196,8 +3196,8 @@ void nsIFrame::BuildDisplayListForStackingContext(
// Restict the building area to the overflow rect for these frames, since
// RetainedDisplayListBuilder uses it to know if the size of the stacking
// context changed.
visibleRect.IntersectRect(visibleRect, GetVisualOverflowRect());
dirtyRect.IntersectRect(dirtyRect, GetVisualOverflowRect());
visibleRect.IntersectRect(visibleRect, InkOverflowRect());
dirtyRect.IntersectRect(dirtyRect, InkOverflowRect());
}
bool hasOverrideDirtyRect = false;
@ -3850,7 +3850,7 @@ static bool DescendIntoChild(nsDisplayListBuilder* aBuilder,
return true;
}
const nsRect overflow = aChild->GetVisualOverflowRect();
const nsRect overflow = aChild->InkOverflowRect();
if (aDirty.Intersects(overflow)) {
return true;
@ -4049,8 +4049,8 @@ void nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
savedOutOfFlowData = nsDisplayListBuilder::GetOutOfFlowData(child);
if (aBuilder->GetIncludeAllOutOfFlows()) {
visible = child->GetVisualOverflowRect();
dirty = child->GetVisualOverflowRect();
visible = child->InkOverflowRect();
dirty = child->InkOverflowRect();
} else if (savedOutOfFlowData) {
visible =
savedOutOfFlowData->GetVisibleRectForFrame(aBuilder, child, &dirty);
@ -6178,7 +6178,7 @@ LogicalSize nsIFrame::ComputeSize(gfxContext* aRenderingContext,
}
nsRect nsIFrame::ComputeTightBounds(DrawTarget* aDrawTarget) const {
return GetVisualOverflowRect();
return InkOverflowRect();
}
/* virtual */
@ -7170,11 +7170,11 @@ static nsRect ComputeEffectsRect(nsIFrame* aFrame, const nsRect& aOverflowRect,
if (aFrame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT)) {
// For SVG frames, we only need to account for filters.
// TODO: We could also take account of clipPath and mask to reduce the
// visual overflow, but that's not essential.
// ink overflow, but that's not essential.
if (aFrame->StyleEffects()->HasFilters()) {
SetOrUpdateRectValuedProperty(aFrame, nsIFrame::PreEffectsBBoxProperty(),
r);
r = SVGUtils::GetPostFilterVisualOverflowRect(aFrame, aOverflowRect);
r = SVGUtils::GetPostFilterInkOverflowRect(aFrame, aOverflowRect);
}
return r;
}
@ -7213,7 +7213,7 @@ static nsRect ComputeEffectsRect(nsIFrame* aFrame, const nsRect& aOverflowRect,
if (SVGIntegrationUtils::UsingOverflowAffectingEffects(aFrame)) {
SetOrUpdateRectValuedProperty(aFrame, nsIFrame::PreEffectsBBoxProperty(),
r);
r = SVGIntegrationUtils::ComputePostEffectsVisualOverflowRect(aFrame, r);
r = SVGIntegrationUtils::ComputePostEffectsInkOverflowRect(aFrame, r);
}
return r;
@ -7247,7 +7247,7 @@ nsPoint nsIFrame::GetPositionIgnoringScrolling() const {
}
nsRect nsIFrame::GetOverflowRect(nsOverflowType aType) const {
MOZ_ASSERT(aType == eVisualOverflow || aType == eScrollableOverflow,
MOZ_ASSERT(aType == eInkOverflow || aType == eScrollableOverflow,
"unexpected type");
// Note that in some cases the overflow area might not have been
@ -7262,8 +7262,8 @@ nsRect nsIFrame::GetOverflowRect(nsOverflowType aType) const {
return GetOverflowAreasProperty()->Overflow(aType);
}
if (aType == eVisualOverflow && mOverflow.mType != NS_FRAME_OVERFLOW_NONE) {
return GetVisualOverflowFromDeltas();
if (aType == eInkOverflow && mOverflow.mType != NS_FRAME_OVERFLOW_NONE) {
return InkOverflowFromDeltas();
}
return nsRect(nsPoint(0, 0), GetSize());
@ -7276,7 +7276,7 @@ nsOverflowAreas nsIFrame::GetOverflowAreas() const {
return *GetOverflowAreasProperty();
}
return nsOverflowAreas(GetVisualOverflowFromDeltas(),
return nsOverflowAreas(InkOverflowFromDeltas(),
nsRect(nsPoint(0, 0), GetSize()));
}
@ -7285,48 +7285,48 @@ nsOverflowAreas nsIFrame::GetOverflowAreasRelativeToSelf() const {
nsOverflowAreas* preTransformOverflows =
GetProperty(PreTransformOverflowAreasProperty());
if (preTransformOverflows) {
return nsOverflowAreas(preTransformOverflows->VisualOverflow(),
return nsOverflowAreas(preTransformOverflows->InkOverflow(),
preTransformOverflows->ScrollableOverflow());
}
}
return nsOverflowAreas(GetVisualOverflowRect(), GetScrollableOverflowRect());
return nsOverflowAreas(InkOverflowRect(), ScrollableOverflowRect());
}
nsRect nsIFrame::GetScrollableOverflowRectRelativeToParent() const {
return GetScrollableOverflowRect() + mRect.TopLeft();
nsRect nsIFrame::ScrollableOverflowRectRelativeToParent() const {
return ScrollableOverflowRect() + mRect.TopLeft();
}
nsRect nsIFrame::GetVisualOverflowRectRelativeToParent() const {
return GetVisualOverflowRect() + mRect.TopLeft();
nsRect nsIFrame::InkOverflowRectRelativeToParent() const {
return InkOverflowRect() + mRect.TopLeft();
}
nsRect nsIFrame::GetScrollableOverflowRectRelativeToSelf() const {
nsRect nsIFrame::ScrollableOverflowRectRelativeToSelf() const {
if (IsTransformed()) {
nsOverflowAreas* preTransformOverflows =
GetProperty(PreTransformOverflowAreasProperty());
if (preTransformOverflows)
return preTransformOverflows->ScrollableOverflow();
}
return GetScrollableOverflowRect();
return ScrollableOverflowRect();
}
nsRect nsIFrame::GetVisualOverflowRectRelativeToSelf() const {
nsRect nsIFrame::InkOverflowRectRelativeToSelf() const {
if (IsTransformed()) {
nsOverflowAreas* preTransformOverflows =
GetProperty(PreTransformOverflowAreasProperty());
if (preTransformOverflows) return preTransformOverflows->VisualOverflow();
if (preTransformOverflows) return preTransformOverflows->InkOverflow();
}
return GetVisualOverflowRect();
return InkOverflowRect();
}
nsRect nsIFrame::GetPreEffectsVisualOverflowRect() const {
nsRect nsIFrame::PreEffectsInkOverflowRect() const {
nsRect* r = GetProperty(nsIFrame::PreEffectsBBoxProperty());
return r ? *r : GetVisualOverflowRectRelativeToSelf();
return r ? *r : InkOverflowRectRelativeToSelf();
}
bool nsIFrame::UpdateOverflow() {
MOZ_ASSERT(FrameMaintainsOverflow(),
"Non-display SVG do not maintain visual overflow rects");
"Non-display SVG do not maintain ink overflow rects");
nsRect rect(nsPoint(0, 0), GetSize());
nsOverflowAreas overflowAreas(rect, rect);
@ -7347,7 +7347,7 @@ bool nsIFrame::UpdateOverflow() {
if (!(flags & ReflowChildFlags::NoSizeView)) {
// Make sure the frame's view is properly sized.
nsViewManager* vm = view->GetViewManager();
vm->ResizeView(view, overflowAreas.VisualOverflow(), true);
vm->ResizeView(view, overflowAreas.InkOverflow(), true);
}
}
@ -7552,12 +7552,12 @@ void nsIFrame::ListGeneric(nsACString& aTo, const char* aPrefix,
}
nsIFrame* f = const_cast<nsIFrame*>(this);
if (f->HasOverflowAreas()) {
nsRect vo = f->GetVisualOverflowRect();
nsRect vo = f->InkOverflowRect();
if (!vo.IsEqualEdges(mRect)) {
aTo += nsPrintfCString(" vis-overflow=%s",
aTo += nsPrintfCString(" ink-overflow=%s",
ConvertToString(vo, aFlags).c_str());
}
nsRect so = f->GetScrollableOverflowRect();
nsRect so = f->ScrollableOverflowRect();
if (!so.IsEqualEdges(mRect)) {
aTo += nsPrintfCString(" scr-overflow=%s",
ConvertToString(so, aFlags).c_str());
@ -8893,7 +8893,7 @@ bool nsIFrame::SetOverflowAreas(const nsOverflowAreas& aOverflowAreas) {
return changed;
}
const nsRect& vis = aOverflowAreas.VisualOverflow();
const nsRect& vis = aOverflowAreas.InkOverflow();
uint32_t l = -vis.x, // left edge: positive delta is leftwards
t = -vis.y, // top: positive is upwards
r = vis.XMost() - mRect.width, // right: positive is rightwards
@ -8923,10 +8923,10 @@ bool nsIFrame::SetOverflowAreas(const nsOverflowAreas& aOverflowAreas) {
// There was no scrollable overflow before, and there isn't now.
return oldDeltas != mOverflow.mVisualDeltas;
} else {
bool changed = !aOverflowAreas.ScrollableOverflow().IsEqualEdges(
nsRect(nsPoint(0, 0), GetSize())) ||
!aOverflowAreas.VisualOverflow().IsEqualEdges(
GetVisualOverflowFromDeltas());
bool changed =
!aOverflowAreas.ScrollableOverflow().IsEqualEdges(
nsRect(nsPoint(0, 0), GetSize())) ||
!aOverflowAreas.InkOverflow().IsEqualEdges(InkOverflowFromDeltas());
// it's a large overflow area that we need to store as a property
mOverflow.mType = NS_FRAME_OVERFLOW_LARGE;
@ -8976,14 +8976,13 @@ static nsRect UnionBorderBoxes(
// that we might need to, and if the frame doesn't clip its overflow
// anyway.
if (aOverflowOverride) {
if (!doTransform &&
bounds.IsEqualEdges(aOverflowOverride->VisualOverflow()) &&
if (!doTransform && bounds.IsEqualEdges(aOverflowOverride->InkOverflow()) &&
bounds.IsEqualEdges(aOverflowOverride->ScrollableOverflow())) {
return u;
}
} else {
if (!doTransform && bounds.IsEqualEdges(aFrame->GetVisualOverflowRect()) &&
bounds.IsEqualEdges(aFrame->GetScrollableOverflowRect())) {
if (!doTransform && bounds.IsEqualEdges(aFrame->InkOverflowRect()) &&
bounds.IsEqualEdges(aFrame->ScrollableOverflowRect())) {
return u;
}
}
@ -9146,7 +9145,7 @@ static void ComputeAndIncludeOutlineArea(nsIFrame* aFrame,
outerRect.Inflate(width + offset);
}
nsRect& vo = aOverflowAreas.VisualOverflow();
nsRect& vo = aOverflowAreas.InkOverflow();
vo.UnionRectEdges(vo, innerRect.Union(outerRect));
}
@ -9163,7 +9162,7 @@ bool nsIFrame::FinishAndStoreOverflow(nsOverflowAreas& aOverflowAreas,
// Store the passed in overflow area if we are a preserve-3d frame or we have
// a transform, and it's not just the frame bounds.
if (hasTransform || Combines3DTransformWithAncestors(disp)) {
if (!aOverflowAreas.VisualOverflow().IsEqualEdges(bounds) ||
if (!aOverflowAreas.InkOverflow().IsEqualEdges(bounds) ||
!aOverflowAreas.ScrollableOverflow().IsEqualEdges(bounds)) {
nsOverflowAreas* initial =
GetProperty(nsIFrame::InitialOverflowProperty());
@ -9273,7 +9272,7 @@ bool nsIFrame::FinishAndStoreOverflow(nsOverflowAreas& aOverflowAreas,
if (presContext->Theme()->GetWidgetOverflow(
presContext->DeviceContext(), this, disp->EffectiveAppearance(),
&r)) {
nsRect& vo = aOverflowAreas.VisualOverflow();
nsRect& vo = aOverflowAreas.InkOverflow();
vo.UnionRectEdges(vo, r);
}
}
@ -9281,8 +9280,8 @@ bool nsIFrame::FinishAndStoreOverflow(nsOverflowAreas& aOverflowAreas,
ComputeAndIncludeOutlineArea(this, aOverflowAreas, aNewSize);
// Nothing in here should affect scrollable overflow.
aOverflowAreas.VisualOverflow() =
ComputeEffectsRect(this, aOverflowAreas.VisualOverflow(), aNewSize);
aOverflowAreas.InkOverflow() =
ComputeEffectsRect(this, aOverflowAreas.InkOverflow(), aNewSize);
// Absolute position clipping
const nsStyleEffects* effects = StyleEffects();
@ -10634,7 +10633,7 @@ static bool IsFrameScrolledOutOfView(const nsIFrame* aTarget,
return nsLayoutUtils::FrameIsScrolledOutOfViewInCrossProcess(aTarget);
}
nsRect clipRect = clipParent->GetVisualOverflowRectRelativeToSelf();
nsRect clipRect = clipParent->InkOverflowRectRelativeToSelf();
// We consider that the target is scrolled out if the scrollable (or root)
// frame is empty.
if (clipRect.IsEmpty()) {
@ -10666,7 +10665,7 @@ static bool IsFrameScrolledOutOfView(const nsIFrame* aTarget,
}
bool nsIFrame::IsScrolledOutOfView() const {
nsRect rect = GetVisualOverflowRectRelativeToSelf();
nsRect rect = InkOverflowRectRelativeToSelf();
return IsFrameScrolledOutOfView(this, rect, this);
}
@ -10811,7 +10810,7 @@ nsRect nsIFrame::GetCompositorHitTestArea(nsDisplayListBuilder* aBuilder) {
// the overflow that are not occupied by descendants get skipped and the
// APZ code sends touch events to the content underneath instead.
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1127773#c15.
area = GetScrollableOverflowRect();
area = ScrollableOverflowRect();
} else {
area = nsRect(nsPoint(0, 0), GetSize());
}
@ -11946,13 +11945,13 @@ void nsIFrame::DisplayReflowExit(nsPresContext* aPresContext, nsIFrame* aFrame,
printf(" status=%s", ToString(aStatus).c_str());
}
if (aFrame->HasOverflowAreas()) {
DR_state->PrettyUC(aMetrics.VisualOverflow().x, x, 16);
DR_state->PrettyUC(aMetrics.VisualOverflow().y, y, 16);
DR_state->PrettyUC(aMetrics.VisualOverflow().width, width, 16);
DR_state->PrettyUC(aMetrics.VisualOverflow().height, height, 16);
DR_state->PrettyUC(aMetrics.InkOverflow().x, x, 16);
DR_state->PrettyUC(aMetrics.InkOverflow().y, y, 16);
DR_state->PrettyUC(aMetrics.InkOverflow().width, width, 16);
DR_state->PrettyUC(aMetrics.InkOverflow().height, height, 16);
printf(" vis-o=(%s,%s) %s x %s", x, y, width, height);
nsRect storedOverflow = aFrame->GetVisualOverflowRect();
nsRect storedOverflow = aFrame->InkOverflowRect();
DR_state->PrettyUC(storedOverflow.x, x, 16);
DR_state->PrettyUC(storedOverflow.y, y, 16);
DR_state->PrettyUC(storedOverflow.width, width, 16);
@ -11965,7 +11964,7 @@ void nsIFrame::DisplayReflowExit(nsPresContext* aPresContext, nsIFrame* aFrame,
DR_state->PrettyUC(aMetrics.ScrollableOverflow().height, height, 16);
printf(" scr-o=(%s,%s) %s x %s", x, y, width, height);
storedOverflow = aFrame->GetScrollableOverflowRect();
storedOverflow = aFrame->ScrollableOverflowRect();
DR_state->PrettyUC(storedOverflow.x, x, 16);
DR_state->PrettyUC(storedOverflow.y, y, 16);
DR_state->PrettyUC(storedOverflow.width, width, 16);

Просмотреть файл

@ -349,7 +349,7 @@ std::ostream& operator<<(std::ostream& aStream, const nsReflowStatus& aStatus);
//----------------------------------------------------------------------
/**
* When there is no scrollable overflow rect, the visual overflow rect
* When there is no scrollable overflow rect, the ink overflow rect
* may be stored as four 1-byte deltas each strictly LESS THAN 0xff, for
* the four edges of the rectangle, or the four bytes may be read as a
* single 32-bit "overflow-rect type" value including at least one 0xff
@ -2792,7 +2792,7 @@ class nsIFrame : public nsQueryFrame {
*
* This probably only needs to include frame bounds, glyph bounds, and
* text decorations, but today it sometimes includes other things that
* contribute to visual overflow.
* contribute to ink overflow.
*
* @param aDrawTarget a draw target that can be used if we need
* to do measurement
@ -3526,7 +3526,7 @@ class nsIFrame : public nsQueryFrame {
* FinishAndStoreOverflow has been called but mRect hasn't yet been
* updated yet. FIXME: This actually isn't true, but it should be.
*
* The visual overflow rect should NEVER be used for things that
* The ink overflow rect should NEVER be used for things that
* affect layout. The scrollable overflow rect is permitted to affect
* layout.
*
@ -3535,15 +3535,13 @@ class nsIFrame : public nsQueryFrame {
* system, and may not contain the frame's border-box, e.g. if there
* is a CSS transform scaling it down)
*/
nsRect GetVisualOverflowRect() const {
return GetOverflowRect(eVisualOverflow);
}
nsRect InkOverflowRect() const { return GetOverflowRect(eInkOverflow); }
/**
* Returns a rect that encompasses the area of this frame that the
* user should be able to scroll to reach. This is similar to
* GetVisualOverflowRect, but does not include outline or shadows, and
* may in the future include more margins than visual overflow does.
* InkOverflowRect, but does not include outline or shadows, and
* may in the future include more margins than ink overflow does.
* It does not include areas clipped out by the CSS "overflow" and
* "clip" properties.
*
@ -3559,7 +3557,7 @@ class nsIFrame : public nsQueryFrame {
* system, and may not contain the frame's border-box, e.g. if there
* is a CSS transform scaling it down)
*/
nsRect GetScrollableOverflowRect() const {
nsRect ScrollableOverflowRect() const {
return GetOverflowRect(eScrollableOverflow);
}
@ -3577,47 +3575,47 @@ class nsIFrame : public nsQueryFrame {
nsOverflowAreas GetOverflowAreasRelativeToSelf() const;
/**
* Same as GetScrollableOverflowRect, except relative to the parent
* Same as ScrollableOverflowRect, except relative to the parent
* frame.
*
* @return the rect relative to the parent frame, in the parent frame's
* coordinate system
*/
nsRect GetScrollableOverflowRectRelativeToParent() const;
nsRect ScrollableOverflowRectRelativeToParent() const;
/**
* Same as GetScrollableOverflowRect, except in this frame's coordinate
* Same as ScrollableOverflowRect, except in this frame's coordinate
* system (before transforms are applied).
*
* @return the rect relative to this frame, before any CSS transforms have
* been applied, i.e. in this frame's coordinate system
*/
nsRect GetScrollableOverflowRectRelativeToSelf() const;
nsRect ScrollableOverflowRectRelativeToSelf() const;
/**
* Like GetVisualOverflowRect, except in this frame's
* Like InkOverflowRect, except in this frame's
* coordinate system (before transforms are applied).
*
* @return the rect relative to this frame, before any CSS transforms have
* been applied, i.e. in this frame's coordinate system
*/
nsRect GetVisualOverflowRectRelativeToSelf() const;
nsRect InkOverflowRectRelativeToSelf() const;
/**
* Same as GetVisualOverflowRect, except relative to the parent
* Same as InkOverflowRect, except relative to the parent
* frame.
*
* @return the rect relative to the parent frame, in the parent frame's
* coordinate system
*/
nsRect GetVisualOverflowRectRelativeToParent() const;
nsRect InkOverflowRectRelativeToParent() const;
/**
* Returns this frame's visual overflow rect as it would be before taking
* Returns this frame's ink overflow rect as it would be before taking
* account of SVG effects or transforms. The rect returned is relative to
* this frame.
*/
nsRect GetPreEffectsVisualOverflowRect() const;
nsRect PreEffectsInkOverflowRect() const;
/**
* Store the overflow area in the frame's mOverflow.mVisualDeltas
@ -5223,7 +5221,7 @@ class nsIFrame : public nsQueryFrame {
return overflow;
}
nsRect GetVisualOverflowFromDeltas() const {
nsRect InkOverflowFromDeltas() const {
MOZ_ASSERT(mOverflow.mType != NS_FRAME_OVERFLOW_LARGE,
"should not be called when overflow is in a property");
// Calculate the rect using deltas from the frame's border rect.

Просмотреть файл

@ -1073,12 +1073,12 @@ void nsImageFrame::Reflow(nsPresContext* aPresContext, ReflowOutput& aMetrics,
ICON_SIZE + 2 * (ICON_PADDING + ALT_BORDER_WIDTH)),
nsPresContext::CSSPixelsToAppUnits(
ICON_SIZE + 2 * (ICON_PADDING + ALT_BORDER_WIDTH)));
// We include the altFeedbackSize in our visual overflow, but not in our
// We include the altFeedbackSize in our ink overflow, but not in our
// scrollable overflow, since it doesn't really need to be scrolled to
// outside the image.
static_assert(eOverflowType_LENGTH == 2, "Unknown overflow types?");
nsRect& visualOverflow = aMetrics.VisualOverflow();
visualOverflow.UnionRect(visualOverflow, altFeedbackSize);
nsRect& inkOverflow = aMetrics.InkOverflow();
inkOverflow.UnionRect(inkOverflow, altFeedbackSize);
} else if (PresShell()->IsActive()) {
// We've just reflowed and we should have an accurate size, so we're ready
// to request a decode.
@ -1327,7 +1327,7 @@ class nsDisplayAltFeedback final : public nsPaintedDisplayItem {
nsRect GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) const final {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) final {

Просмотреть файл

@ -255,7 +255,7 @@ LogicalSize nsInlineFrame::ComputeSize(
nsRect nsInlineFrame::ComputeTightBounds(DrawTarget* aDrawTarget) const {
// be conservative
if (Style()->HasTextDecorationLines()) {
return GetVisualOverflowRect();
return InkOverflowRect();
}
return ComputeSimpleTightBounds(aDrawTarget);
}

Просмотреть файл

@ -255,10 +255,10 @@ void nsLineBox::List(FILE* out, const char* aPrefix,
nsIFrame::ConvertToString(mBounds, mWritingMode, aFlags).c_str());
}
if (mData) {
const nsRect vo = mData->mOverflowAreas.VisualOverflow();
const nsRect vo = mData->mOverflowAreas.InkOverflow();
const nsRect so = mData->mOverflowAreas.ScrollableOverflow();
if (!vo.IsEqualEdges(bounds) || !so.IsEqualEdges(bounds)) {
str += nsPrintfCString("vis-overflow=%s scr-overflow=%s ",
str += nsPrintfCString("ink-overflow=%s scr-overflow=%s ",
nsIFrame::ConvertToString(vo, aFlags).c_str(),
nsIFrame::ConvertToString(so, aFlags).c_str());
}
@ -536,7 +536,7 @@ void nsLineBox::SetOverflowAreas(const nsOverflowAreas& aOverflowAreas) {
"illegal height for combined area");
}
nsRect bounds = GetPhysicalBounds();
if (!aOverflowAreas.VisualOverflow().IsEqualInterior(bounds) ||
if (!aOverflowAreas.InkOverflow().IsEqualInterior(bounds) ||
!aOverflowAreas.ScrollableOverflow().IsEqualEdges(bounds)) {
if (!mData) {
if (IsInline()) {

Просмотреть файл

@ -420,10 +420,8 @@ class nsLineBox final : public nsLineLink {
nsRect bounds = GetPhysicalBounds();
return nsOverflowAreas(bounds, bounds);
}
nsRect GetVisualOverflowArea() const {
return GetOverflowArea(eVisualOverflow);
}
nsRect GetScrollableOverflowArea() {
nsRect InkOverflowRect() const { return GetOverflowArea(eInkOverflow); }
nsRect ScrollableOverflowRect() {
return GetOverflowArea(eScrollableOverflow);
}

Просмотреть файл

@ -3258,8 +3258,8 @@ void nsLineLayout::RelativePositionFrames(PerSpanData* psd,
overflowAreas.ScrollableOverflow().UnionRect(
psd->mFrame->mOverflowAreas.ScrollableOverflow(), adjustedBounds);
overflowAreas.VisualOverflow().UnionRect(
psd->mFrame->mOverflowAreas.VisualOverflow(), adjustedBounds);
overflowAreas.InkOverflow().UnionRect(
psd->mFrame->mOverflowAreas.InkOverflow(), adjustedBounds);
} else {
LogicalRect rect(wm, psd->mIStart, mBStartEdge, psd->mICoord - psd->mIStart,
mFinalLineBSize);
@ -3267,8 +3267,8 @@ void nsLineLayout::RelativePositionFrames(PerSpanData* psd,
// children of the block starts at the upper left corner of the
// line and is sized to match the size of the line's bounding box
// (the same size as the values returned from VerticalAlignFrames)
overflowAreas.VisualOverflow() = rect.GetPhysicalRect(wm, ContainerSize());
overflowAreas.ScrollableOverflow() = overflowAreas.VisualOverflow();
overflowAreas.InkOverflow() = rect.GetPhysicalRect(wm, ContainerSize());
overflowAreas.ScrollableOverflow() = overflowAreas.InkOverflow();
}
for (PerFrameData* pfd = psd->mFirstFrame; pfd; pfd = pfd->mNext) {
@ -3283,7 +3283,7 @@ void nsLineLayout::RelativePositionFrames(PerSpanData* psd,
if (frame->HasView())
nsContainerFrame::SyncFrameViewAfterReflow(
mPresContext, frame, frame->GetView(),
pfd->mOverflowAreas.VisualOverflow(),
pfd->mOverflowAreas.InkOverflow(),
nsIFrame::ReflowChildFlags::NoSizeView);
// Note: the combined area of a child is in its coordinate
@ -3330,7 +3330,7 @@ void nsLineLayout::RelativePositionFrames(PerSpanData* psd,
// about the root span, since it doesn't have a frame.
if (frame->HasView())
nsContainerFrame::SyncFrameViewAfterReflow(
mPresContext, frame, frame->GetView(), r.VisualOverflow(),
mPresContext, frame, frame->GetView(), r.InkOverflow(),
nsIFrame::ReflowChildFlags::NoMoveView);
overflowAreas.UnionWith(r + frame->GetPosition());

Просмотреть файл

@ -507,7 +507,7 @@ void nsPageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
clipState.Clear();
clipState.ClipContainingBlockDescendants(clipRect, nullptr);
nsRect visibleRect = child->GetVisualOverflowRectRelativeToSelf();
nsRect visibleRect = child->InkOverflowRectRelativeToSelf();
nsDisplayListBuilder::AutoBuildingDisplayList buildingForChild(
aBuilder, child, visibleRect, visibleRect);
child->BuildDisplayListForStackingContext(aBuilder, &content);

Просмотреть файл

@ -706,7 +706,7 @@ void nsPageSequenceFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
visible.ScaleInverseRoundOut(GetPrintPreviewScale());
while (child) {
if (child->GetVisualOverflowRectRelativeToParent().Intersects(visible)) {
if (child->InkOverflowRectRelativeToParent().Intersects(visible)) {
nsDisplayListBuilder::AutoBuildingDisplayList buildingForChild(
aBuilder, child, visible - child->GetPosition(),
visible - child->GetPosition());

Просмотреть файл

@ -5382,7 +5382,7 @@ static gfxFloat ComputeDecorationLineOffset(
void nsTextFrame::UnionAdditionalOverflow(nsPresContext* aPresContext,
nsIFrame* aBlock,
PropertyProvider& aProvider,
nsRect* aVisualOverflowRect,
nsRect* aInkOverflowRect,
bool aIncludeTextDecorations,
bool aIncludeShadows) {
const WritingMode wm = GetWritingMode();
@ -5427,9 +5427,9 @@ void nsTextFrame::UnionAdditionalOverflow(nsPresContext* aPresContext,
nscoord maxAscent =
inverted ? fontMetrics->MaxDescent() : fontMetrics->MaxAscent();
Float gfxWidth = (verticalRun ? aVisualOverflowRect->height
: aVisualOverflowRect->width) /
appUnitsPerDevUnit;
Float gfxWidth =
(verticalRun ? aInkOverflowRect->height : aInkOverflowRect->width) /
appUnitsPerDevUnit;
params.lineSize.width = gfxWidth;
params.ascent = gfxFloat(mAscent) / appUnitsPerDevUnit;
params.style = decorationStyle;
@ -5446,8 +5446,8 @@ void nsTextFrame::UnionAdditionalOverflow(nsPresContext* aPresContext,
nsRect overlineRect =
nsCSSRendering::GetTextDecorationRect(aPresContext, params);
aVisualOverflowRect->UnionRect(*aVisualOverflowRect, underlineRect);
aVisualOverflowRect->UnionRect(*aVisualOverflowRect, overlineRect);
aInkOverflowRect->UnionRect(*aInkOverflowRect, underlineRect);
aInkOverflowRect->UnionRect(*aInkOverflowRect, overlineRect);
// XXX If strikeoutSize is much thicker than the underlineSize, it may
// cause overflowing from the overflow rect. However, such case
@ -5552,15 +5552,15 @@ void nsTextFrame::UnionAdditionalOverflow(nsPresContext* aPresContext,
params.decoration);
}
aVisualOverflowRect->UnionRect(
*aVisualOverflowRect,
aInkOverflowRect->UnionRect(
*aInkOverflowRect,
verticalDec
? nsRect(topOrLeft, 0, bottomOrRight - topOrLeft, measure)
: nsRect(0, topOrLeft, measure, bottomOrRight - topOrLeft));
}
aVisualOverflowRect->UnionRect(*aVisualOverflowRect,
UpdateTextEmphasis(parentWM, aProvider));
aInkOverflowRect->UnionRect(*aInkOverflowRect,
UpdateTextEmphasis(parentWM, aProvider));
}
// text-stroke overflows: add half of text-stroke-width on all sides
@ -5568,22 +5568,22 @@ void nsTextFrame::UnionAdditionalOverflow(nsPresContext* aPresContext,
if (textStrokeWidth > 0) {
// Inflate rect by stroke-width/2; we add an extra pixel to allow for
// antialiasing, rounding errors, etc.
nsRect strokeRect = *aVisualOverflowRect;
nsRect strokeRect = *aInkOverflowRect;
strokeRect.Inflate(textStrokeWidth / 2 + appUnitsPerDevUnit);
aVisualOverflowRect->UnionRect(*aVisualOverflowRect, strokeRect);
aInkOverflowRect->UnionRect(*aInkOverflowRect, strokeRect);
}
// Text-shadow overflows
if (aIncludeShadows) {
nsRect shadowRect =
nsLayoutUtils::GetTextShadowRectsUnion(*aVisualOverflowRect, this);
aVisualOverflowRect->UnionRect(*aVisualOverflowRect, shadowRect);
nsLayoutUtils::GetTextShadowRectsUnion(*aInkOverflowRect, this);
aInkOverflowRect->UnionRect(*aInkOverflowRect, shadowRect);
}
// When this frame is not selected, the text-decoration area must be in
// frame bounds.
if (!IsSelected() ||
!CombineSelectionUnderlineRect(aPresContext, *aVisualOverflowRect))
!CombineSelectionUnderlineRect(aPresContext, *aInkOverflowRect))
return;
AddStateBits(TEXT_SELECTION_UNDERLINE_OVERFLOWED);
}
@ -7053,7 +7053,7 @@ void nsTextFrame::DrawTextRunAndDecorations(
if (!skipClipping) {
// Get the inline-size according to the specified range.
gfxFloat clipLength = mTextRun->GetAdvanceWidth(aRange, aParams.provider);
nsRect visualRect = GetVisualOverflowRect();
nsRect visualRect = InkOverflowRect();
const bool isInlineReversed = mTextRun->IsInlineReversed();
if (verticalDec) {
@ -7156,7 +7156,7 @@ nsRect nsTextFrame::WebRenderBounds() {
nsOverflowAreas overflowAreas;
ComputeCustomOverflowInternal(overflowAreas, false);
cachedBounds = new nsRect();
*cachedBounds = overflowAreas.VisualOverflow();
*cachedBounds = overflowAreas.InkOverflow();
SetProperty(WebRenderTextBounds(), cachedBounds);
}
return *cachedBounds;
@ -8639,7 +8639,7 @@ static nsRect RoundOut(const gfxRect& aRect) {
nsRect nsTextFrame::ComputeTightBounds(DrawTarget* aDrawTarget) const {
if (Style()->HasTextDecorationLines() || HasAnyStateBits(TEXT_HYPHEN_BREAK)) {
// This is conservative, but OK.
return GetVisualOverflowRect();
return InkOverflowRect();
}
gfxSkipCharsIterator iter =
@ -9432,13 +9432,13 @@ void nsTextFrame::ReflowText(nsLineLayout& aLineLayout, nscoord aAvailableWidth,
boundingBox.y += mAscent;
}
aMetrics.SetOverflowAreasToDesiredBounds();
aMetrics.VisualOverflow().UnionRect(aMetrics.VisualOverflow(), boundingBox);
aMetrics.InkOverflow().UnionRect(aMetrics.InkOverflow(), boundingBox);
// When we have text decorations, we don't need to compute their overflow now
// because we're guaranteed to do it later
// (see nsLineLayout::RelativePositionFrames)
UnionAdditionalOverflow(presContext, aLineLayout.LineContainerRI()->mFrame,
provider, &aMetrics.VisualOverflow(), false, true);
provider, &aMetrics.InkOverflow(), false, true);
/////////////////////////////////////////////////////////////////////
// Clean up, update state
@ -9675,7 +9675,7 @@ nsOverflowAreas nsTextFrame::RecomputeOverflow(nsIFrame* aBlockFrame,
std::swap(boundingBox.x, boundingBox.y);
std::swap(boundingBox.width, boundingBox.height);
}
nsRect& vis = result.VisualOverflow();
nsRect& vis = result.InkOverflow();
vis.UnionRect(vis, boundingBox);
UnionAdditionalOverflow(PresContext(), aBlockFrame, provider, &vis, true,
aIncludeShadows);

Просмотреть файл

@ -824,7 +824,7 @@ class nsTextFrame : public nsIFrame {
void UnionAdditionalOverflow(nsPresContext* aPresContext, nsIFrame* aBlock,
PropertyProvider& aProvider,
nsRect* aVisualOverflowRect,
nsRect* aInkOverflowRect,
bool aIncludeTextDecorations,
bool aIncludeShadows);

Просмотреть файл

@ -717,7 +717,7 @@ static bool IsFrameOutsideOfAncestor(const nsIFrame* aFrame,
const nsIFrame* aAncestorFrame,
const nsRect& aAncestorRect) {
nsRect frameRectInAncestorSpace = nsLayoutUtils::TransformFrameRectToAncestor(
aFrame, aFrame->GetScrollableOverflowRect(), RelativeTo{aAncestorFrame},
aFrame, aFrame->ScrollableOverflowRect(), RelativeTo{aAncestorFrame},
nullptr, nullptr, false, nullptr);
// We use nsRect::SaturatingUnionEdges because it correctly handles the case

Просмотреть файл

@ -757,7 +757,7 @@ bool nsMathMLContainerFrame::ComputeCustomOverflow(
mBoundingMetrics.rightBearing - mBoundingMetrics.leftBearing,
mBoundingMetrics.ascent + mBoundingMetrics.descent);
// REVIEW: Maybe this should contribute only to visual overflow
// REVIEW: Maybe this should contribute only to ink overflow
// and not scrollable?
aOverflowAreas.UnionAllWith(boundingBox);
return nsContainerFrame::ComputeCustomOverflow(aOverflowAreas);

Просмотреть файл

@ -337,7 +337,7 @@ void DisplayItemData::BeginUpdate(Layer* aLayer, LayerState aState,
if (!copy.RemoveElement(aItem->Frame())) {
AddFrame(aItem->Frame());
mChangedFrameInvalidations.Or(mChangedFrameInvalidations,
aItem->Frame()->GetVisualOverflowRect());
aItem->Frame()->InkOverflowRect());
}
if (aIsMerged) {
@ -347,7 +347,7 @@ void DisplayItemData::BeginUpdate(Layer* aLayer, LayerState aState,
if (!copy.RemoveElement(frame)) {
AddFrame(frame);
mChangedFrameInvalidations.Or(mChangedFrameInvalidations,
frame->GetVisualOverflowRect());
frame->InkOverflowRect());
}
}
}
@ -355,7 +355,7 @@ void DisplayItemData::BeginUpdate(Layer* aLayer, LayerState aState,
for (nsIFrame* frame : copy) {
RemoveFrame(frame);
mChangedFrameInvalidations.Or(mChangedFrameInvalidations,
frame->GetVisualOverflowRect());
frame->InkOverflowRect());
}
}
@ -5457,7 +5457,7 @@ void FrameLayerBuilder::AddPaintedDisplayItem(PaintedLayerData* aLayerData,
nsIntRegion invalid;
if (!aItem.mInactiveLayerData->mProps->ComputeDifferences(tmpLayer, invalid,
nullptr)) {
nsRect visible = aItem.mItem->Frame()->GetVisualOverflowRect();
nsRect visible = aItem.mItem->Frame()->InkOverflowRect();
invalid = visible.ToOutsidePixels(paintedData->mAppUnitsPerDevPixel);
}
if (aItem.mLayerState == LayerState::LAYER_SVG_EFFECTS) {
@ -6263,7 +6263,7 @@ already_AddRefed<ContainerLayer> FrameLayerBuilder::BuildContainerLayerFor(
aChildren->GetClippedBoundsWithRespectToASR(aBuilder, containerASR);
nsRect childrenVisible =
aContainerItem ? aContainerItem->GetBuildingRectForChildren()
: aContainerFrame->GetVisualOverflowRectRelativeToSelf();
: aContainerFrame->InkOverflowRectRelativeToSelf();
if (!ChooseScaleAndSetTransform(
this, aBuilder, aContainerFrame, aContainerItem,
bounds.Intersect(childrenVisible), aTransform, aParameters,

Просмотреть файл

@ -1061,8 +1061,8 @@ static bool ProcessFrameInternal(nsIFrame* aFrame,
aOverflow.SetEmpty();
}
} else {
aOverflow.IntersectRect(
aOverflow, currentFrame->GetVisualOverflowRectRelativeToSelf());
aOverflow.IntersectRect(aOverflow,
currentFrame->InkOverflowRectRelativeToSelf());
}
if (aOverflow.IsEmpty()) {
@ -1127,7 +1127,7 @@ static bool ProcessFrameInternal(nsIFrame* aFrame,
if (!data->mModifiedAGR) {
data->mModifiedAGR = *aAGR;
} else if (data->mModifiedAGR != *aAGR) {
data->mDirtyRect = currentFrame->GetVisualOverflowRectRelativeToSelf();
data->mDirtyRect = currentFrame->InkOverflowRectRelativeToSelf();
CRR_LOG(
"Found multiple modified AGRs within this stacking context, "
"giving up\n");
@ -1171,7 +1171,7 @@ bool RetainedDisplayListBuilder::ProcessFrame(
// outside of the stacking context, since we know the stacking context item
// exists in the old list, so we can trivially merge without needing other
// items.
nsRect overflow = aFrame->GetVisualOverflowRectRelativeToSelf();
nsRect overflow = aFrame->InkOverflowRectRelativeToSelf();
// If the modified frame is also a caret frame, include the caret area.
// This is needed because some frames (for example text frames without text)
@ -1450,7 +1450,7 @@ PartialUpdateResult RetainedDisplayListBuilder::AttemptPartialUpdate(
modifiedDirty.IntersectRect(
modifiedDirty,
mBuilder.RootReferenceFrame()->GetVisualOverflowRectRelativeToSelf());
mBuilder.RootReferenceFrame()->InkOverflowRectRelativeToSelf());
mBuilder.SetDirtyRect(modifiedDirty);
mBuilder.SetPartialUpdate(true);
@ -1463,7 +1463,7 @@ PartialUpdateResult RetainedDisplayListBuilder::AttemptPartialUpdate(
nsLayoutUtils::AddExtraBackgroundItems(
&mBuilder, &modifiedDL, mBuilder.RootReferenceFrame(),
nsRect(nsPoint(0, 0), mBuilder.RootReferenceFrame()->GetSize()),
mBuilder.RootReferenceFrame()->GetVisualOverflowRectRelativeToSelf(),
mBuilder.RootReferenceFrame()->InkOverflowRectRelativeToSelf(),
aBackstop);
}
mBuilder.SetPartialUpdate(false);

Просмотреть файл

@ -1375,10 +1375,9 @@ gfx::sRGBColor nsCSSRendering::GetShadowColor(const StyleSimpleShadow& aShadow,
nsRect nsCSSRendering::GetShadowRect(const nsRect& aFrameArea,
bool aNativeTheme, nsIFrame* aForFrame) {
nsRect frameRect = aNativeTheme
? aForFrame->GetVisualOverflowRectRelativeToSelf() +
aFrameArea.TopLeft()
: aFrameArea;
nsRect frameRect = aNativeTheme ? aForFrame->InkOverflowRectRelativeToSelf() +
aFrameArea.TopLeft()
: aFrameArea;
Sides skipSides = aForFrame->GetSkipSides();
frameRect = BoxDecorationRectForBorder(aForFrame, frameRect, skipSides);

Просмотреть файл

@ -485,7 +485,7 @@ nsRect nsDisplayListBuilder::OutOfFlowDisplayData::ComputeVisibleRectForFrame(
*aOutDirtyRect = dirtyRectRelativeToDirtyFrame - aFrame->GetPosition();
visible -= aFrame->GetPosition();
nsRect overflowRect = aFrame->GetVisualOverflowRect();
nsRect overflowRect = aFrame->InkOverflowRect();
if (aFrame->IsTransformed() &&
mozilla::EffectCompositor::HasAnimationsForCompositor(
@ -4679,7 +4679,7 @@ void nsDisplayBackgroundColor::WriteDebugInfo(std::stringstream& aStream) {
nsRect nsDisplayOutline::GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap) const {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
void nsDisplayOutline::Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) {
@ -5725,7 +5725,7 @@ already_AddRefed<Layer> nsDisplayOpacity::BuildLayer(
*/
static bool IsItemTooSmallForActiveLayer(nsIFrame* aFrame) {
nsIntRect visibleDevPixels =
aFrame->GetVisualOverflowRectRelativeToSelf().ToOutsidePixels(
aFrame->InkOverflowRectRelativeToSelf().ToOutsidePixels(
aFrame->PresContext()->AppUnitsPerDevPixel());
return visibleDevPixels.Size() <
nsIntSize(StaticPrefs::layout_min_active_layer_size(),
@ -7732,7 +7732,7 @@ auto nsDisplayTransform::ShouldPrerenderTransformedContent(
// If the incoming dirty rect already contains the entire overflow area,
// we are already rendering the entire content.
nsRect overflow = aFrame->GetVisualOverflowRectRelativeToSelf();
nsRect overflow = aFrame->InkOverflowRectRelativeToSelf();
// UntransformRect will not touch the output rect (`&untranformedDirtyRect`)
// in cases of non-invertible transforms, so we set `untransformedRect` to
// `aDirtyRect` as an initial value for such cases.
@ -8160,7 +8160,7 @@ bool nsDisplayTransform::ComputeVisibility(nsDisplayListBuilder* aBuilder,
* If we can't untransform, take the entire overflow rect */
nsRect untransformedVisibleRect;
if (!UntransformPaintRect(aBuilder, &untransformedVisibleRect)) {
untransformedVisibleRect = mFrame->GetVisualOverflowRectRelativeToSelf();
untransformedVisibleRect = mFrame->InkOverflowRectRelativeToSelf();
}
bool snap;
@ -8758,7 +8758,7 @@ nsDisplayText::nsDisplayText(nsDisplayListBuilder* aBuilder,
mVisIEndEdge(0) {
MOZ_COUNT_CTOR(nsDisplayText);
mIsFrameSelected = aIsSelected;
mBounds = mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
mBounds = mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
// Bug 748228
mBounds.Inflate(mFrame->PresContext()->AppUnitsPerDevPixel());
}
@ -9685,7 +9685,7 @@ bool nsDisplayBackdropFilters::CreateWebRenderCommands(
nsDisplayFilters::nsDisplayFilters(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList)
: nsDisplayEffectsBase(aBuilder, aFrame, aList),
mEffectsBounds(aFrame->GetVisualOverflowRectRelativeToSelf()) {
mEffectsBounds(aFrame->InkOverflowRectRelativeToSelf()) {
MOZ_COUNT_CTOR(nsDisplayFilters);
}

Просмотреть файл

@ -7268,7 +7268,7 @@ class nsDisplayText final : public nsPaintedDisplayItem {
struct ClipEdges {
ClipEdges(const nsIFrame* aFrame, const nsPoint& aToReferenceFrame,
nscoord aVisIStartEdge, nscoord aVisIEndEdge) {
nsRect r = aFrame->GetScrollableOverflowRect() + aToReferenceFrame;
nsRect r = aFrame->ScrollableOverflowRect() + aToReferenceFrame;
if (aFrame->GetWritingMode().IsVertical()) {
mVisIStart = aVisIStartEdge > 0 ? r.y + aVisIStartEdge : nscoord_MIN;
mVisIEnd = aVisIEndEdge > 0

Просмотреть файл

@ -2,7 +2,7 @@
defaults test-pref(browser.display.document_color_use,2) test-pref(browser.display.permit_backplate,true) test-pref(layout.css.prefers-contrast.enabled,true)
# There are several platform-specific fuzzy-if notations below due to
# anti-aliasing, extra visual overflow, and slightly inacurate reftest
# anti-aliasing, extra ink overflow, and slightly inacurate reftest
# mocking. You can read more about the annotations and their specifics here:
# https://bugzilla.mozilla.org/show_bug.cgi?id=1539212#c25

Просмотреть файл

@ -35,7 +35,7 @@ class CSSFilterInstance {
* aFilter during the lifetime of CSSFilterInstance.
* @param aShadowFallbackColor The color that should be used for
* drop-shadow() filters that don't specify a shadow color.
* @param aTargetBoundsInFilterSpace The pre-filter visual overflow rect of
* @param aTargetBoundsInFilterSpace The pre-filter ink overflow rect of
* the frame being filtered, in filter space.
* @param aFrameSpaceInCSSPxToFilterSpaceTransform The transformation from
* the filtered element's frame space in CSS pixels to filter space.

Просмотреть файл

@ -411,7 +411,7 @@ nsRect FilterInstance::GetPostFilterBounds(nsIFrame* aFilteredFrame,
const nsRect* aPreFilterBounds) {
MOZ_ASSERT(!aFilteredFrame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT) ||
!aFilteredFrame->HasAnyStateBits(NS_FRAME_IS_NONDISPLAY),
"Non-display SVG do not maintain visual overflow rects");
"Non-display SVG do not maintain ink overflow rects");
nsRegion preFilterRegion;
nsRegion* preFilterRegionPtr = nullptr;
@ -443,7 +443,7 @@ FilterInstance::FilterInstance(
bool aFilterInputIsTainted, SVGFilterPaintCallback* aPaintCallback,
const gfxMatrix& aPaintTransform, const nsRegion* aPostFilterDirtyRegion,
const nsRegion* aPreFilterDirtyRegion,
const nsRect* aPreFilterVisualOverflowRectOverride,
const nsRect* aPreFilterInkOverflowRectOverride,
const gfxRect* aOverrideBBox)
: mTargetFrame(aTargetFrame),
mTargetContent(aTargetContent),
@ -482,11 +482,10 @@ FilterInstance::FilterInstance(
mFrameSpaceInCSSPxToFilterSpaceTransform.Invert();
nsIntRect targetBounds;
if (aPreFilterVisualOverflowRectOverride) {
targetBounds =
FrameSpaceToFilterSpace(aPreFilterVisualOverflowRectOverride);
if (aPreFilterInkOverflowRectOverride) {
targetBounds = FrameSpaceToFilterSpace(aPreFilterInkOverflowRectOverride);
} else if (mTargetFrame) {
nsRect preFilterVOR = mTargetFrame->GetPreEffectsVisualOverflowRect();
nsRect preFilterVOR = mTargetFrame->PreEffectsInkOverflowRect();
targetBounds = FrameSpaceToFilterSpace(&preFilterVOR);
}
mTargetBounds.UnionRect(mTargetBBoxInFilterSpace, targetBounds);

Просмотреть файл

@ -107,11 +107,11 @@ class FilterInstance {
nsIFrame* aFilteredFrame, const nsRegion& aPostFilterDirtyRegion);
/**
* Returns the post-filter visual overflow rect (paint bounds) of
* Returns the post-filter ink overflow rect (paint bounds) of
* aFilteredFrame.
* @param aOverrideBBox A user space rect, in user units, that should be used
* as aFilteredFrame's bbox ('bbox' is a specific SVG term), if non-null.
* @param aPreFilterBounds The pre-filter visual overflow rect of
* @param aPreFilterBounds The pre-filter ink overflow rect of
* aFilteredFrame, if non-null.
*/
static nsRect GetPostFilterBounds(nsIFrame* aFilteredFrame,
@ -147,8 +147,8 @@ class FilterInstance {
* @param aPreFilterDirtyRegion [optional] The pre-filter area of
* the filtered element that changed, in app units. Only required if you
* will call ComputePostFilterDirtyRegion().
* @param aPreFilterVisualOverflowRectOverride [optional] Use a different
* visual overflow rect for the target element.
* @param aPreFilterInkOverflowRectOverride [optional] Use a different
* ink overflow rect for the target element.
* @param aOverrideBBox [optional] Use a different SVG bbox for the target
* element. Must be non-null if aTargetFrame is null.
*/
@ -160,7 +160,7 @@ class FilterInstance {
const gfxMatrix& aPaintTransform,
const nsRegion* aPostFilterDirtyRegion = nullptr,
const nsRegion* aPreFilterDirtyRegion = nullptr,
const nsRect* aPreFilterVisualOverflowRectOverride = nullptr,
const nsRect* aPreFilterInkOverflowRectOverride = nullptr,
const gfxRect* aOverrideBBox = nullptr);
/**

Просмотреть файл

@ -60,7 +60,7 @@ class SVGFEContainerFrame final : public nsContainerFrame {
int32_t aModType) override;
virtual bool ComputeCustomOverflow(nsOverflowAreas& aOverflowAreas) override {
// We don't maintain a visual overflow rect
// We don't maintain a ink overflow rect
return false;
}
};

Просмотреть файл

@ -68,7 +68,7 @@ class SVGFEImageFrame final : public nsIFrame {
const Maybe<OnNonvisible>& aNonvisibleAction = Nothing()) override;
virtual bool ComputeCustomOverflow(nsOverflowAreas& aOverflowAreas) override {
// We don't maintain a visual overflow rect
// We don't maintain a ink overflow rect
return false;
}
};

Просмотреть файл

@ -57,7 +57,7 @@ class SVGFELeafFrame final : public nsIFrame {
int32_t aModType) override;
virtual bool ComputeCustomOverflow(nsOverflowAreas& aOverflowAreas) override {
// We don't maintain a visual overflow rect
// We don't maintain a ink overflow rect
return false;
}
};

Просмотреть файл

@ -52,7 +52,7 @@ class SVGFEUnstyledLeafFrame final : public nsIFrame {
int32_t aModType) override;
virtual bool ComputeCustomOverflow(nsOverflowAreas& aOverflowAreas) override {
// We don't maintain a visual overflow rect
// We don't maintain a ink overflow rect
return false;
}
};

Просмотреть файл

@ -211,7 +211,7 @@ void SVGForeignObjectFrame::PaintSVG(gfxContext& aContext,
return;
}
nsRect kidDirtyRect = kid->GetVisualOverflowRect();
nsRect kidDirtyRect = kid->InkOverflowRect();
/* Check if we need to draw anything. */
if (aDirtyRect) {
@ -363,7 +363,7 @@ void SVGForeignObjectFrame::ReflowSVG() {
}
auto* anonKid = PrincipalChildList().FirstChild();
nsRect overflow = anonKid->GetVisualOverflowRect();
nsRect overflow = anonKid->InkOverflowRect();
nsOverflowAreas overflowAreas(overflow, overflow);
FinishAndStoreOverflow(overflowAreas, mRect.Size());
@ -377,7 +377,7 @@ void SVGForeignObjectFrame::NotifySVGChanged(uint32_t aFlags) {
MOZ_ASSERT(aFlags & (TRANSFORM_CHANGED | COORD_CONTEXT_CHANGED),
"Invalidation logic may need adjusting");
bool needNewBounds = false; // i.e. mRect or visual overflow rect
bool needNewBounds = false; // i.e. mRect or ink overflow rect
bool needReflow = false;
bool needNewCanvasTM = false;
@ -547,7 +547,7 @@ nsRect SVGForeignObjectFrame::GetInvalidRegion() {
gfxRect r(mRect.x, mRect.y, mRect.width, mRect.height);
r.Scale(1.0 / AppUnitsPerCSSPixel());
nsRect rect = SVGUtils::ToCanvasBounds(r, GetCanvasTM(), PresContext());
rect = SVGUtils::GetPostFilterVisualOverflowRect(this, rect);
rect = SVGUtils::GetPostFilterInkOverflowRect(this, rect);
return rect;
}
return nsRect();

Просмотреть файл

@ -39,25 +39,25 @@ using namespace mozilla::image;
namespace mozilla {
/**
* This class is used to get the pre-effects visual overflow rect of a frame,
* This class is used to get the pre-effects ink overflow rect of a frame,
* or, in the case of a frame with continuations, to collect the union of the
* pre-effects visual overflow rects of all the continuations. The result is
* pre-effects ink overflow rects of all the continuations. The result is
* relative to the origin (top left corner of the border box) of the frame, or,
* if the frame has continuations, the origin of the _first_ continuation.
*/
class PreEffectsVisualOverflowCollector : public nsLayoutUtils::BoxCallback {
class PreEffectsInkOverflowCollector : public nsLayoutUtils::BoxCallback {
public:
/**
* If the pre-effects visual overflow rect of the frame being examined
* If the pre-effects ink overflow rect of the frame being examined
* happens to be known, it can be passed in as aCurrentFrame and its
* pre-effects visual overflow rect can be passed in as
* pre-effects ink overflow rect can be passed in as
* aCurrentFrameOverflowArea. This is just an optimization to save a
* frame property lookup - these arguments are optional.
*/
PreEffectsVisualOverflowCollector(nsIFrame* aFirstContinuation,
nsIFrame* aCurrentFrame,
const nsRect& aCurrentFrameOverflowArea,
bool aInReflow)
PreEffectsInkOverflowCollector(nsIFrame* aFirstContinuation,
nsIFrame* aCurrentFrame,
const nsRect& aCurrentFrameOverflowArea,
bool aInReflow)
: mFirstContinuation(aFirstContinuation),
mCurrentFrame(aCurrentFrame),
mCurrentFrameOverflowArea(aCurrentFrameOverflowArea),
@ -69,7 +69,7 @@ class PreEffectsVisualOverflowCollector : public nsLayoutUtils::BoxCallback {
virtual void AddBox(nsIFrame* aFrame) override {
nsRect overflow = (aFrame == mCurrentFrame)
? mCurrentFrameOverflowArea
: GetPreEffectsVisualOverflowRect(aFrame, mInReflow);
: PreEffectsInkOverflowRect(aFrame, mInReflow);
mResult.UnionRect(mResult,
overflow + aFrame->GetOffsetTo(mFirstContinuation));
}
@ -77,8 +77,7 @@ class PreEffectsVisualOverflowCollector : public nsLayoutUtils::BoxCallback {
nsRect GetResult() const { return mResult; }
private:
static nsRect GetPreEffectsVisualOverflowRect(nsIFrame* aFrame,
bool aInReflow) {
static nsRect PreEffectsInkOverflowRect(nsIFrame* aFrame, bool aInReflow) {
nsRect* r = aFrame->GetProperty(nsIFrame::PreEffectsBBoxProperty());
if (r) {
return *r;
@ -86,7 +85,7 @@ class PreEffectsVisualOverflowCollector : public nsLayoutUtils::BoxCallback {
#ifdef DEBUG
// Having PreTransformOverflowAreasProperty cached means
// GetVisualOverflowRect() will return post-effect rect, which is not what
// InkOverflowRect() will return post-effect rect, which is not what
// we want. This function intentional reports pre-effect rect. But it does
// not matter if there is no SVG effect on this frame, since no effect
// means post-effect rect matches pre-effect rect.
@ -100,10 +99,10 @@ class PreEffectsVisualOverflowCollector : public nsLayoutUtils::BoxCallback {
aFrame->GetProperty(nsIFrame::PreTransformOverflowAreasProperty());
MOZ_ASSERT(!preTransformOverflows,
"GetVisualOverflowRect() won't return the pre-effects rect!");
"InkOverflowRect() won't return the pre-effects rect!");
}
#endif
return aFrame->GetVisualOverflowRectRelativeToSelf();
return aFrame->InkOverflowRectRelativeToSelf();
}
nsIFrame* mFirstContinuation;
@ -114,18 +113,18 @@ class PreEffectsVisualOverflowCollector : public nsLayoutUtils::BoxCallback {
};
/**
* Gets the union of the pre-effects visual overflow rects of all of a frame's
* Gets the union of the pre-effects ink overflow rects of all of a frame's
* continuations, in "user space".
*/
static nsRect GetPreEffectsVisualOverflowUnion(
static nsRect GetPreEffectsInkOverflowUnion(
nsIFrame* aFirstContinuation, nsIFrame* aCurrentFrame,
const nsRect& aCurrentFramePreEffectsOverflow,
const nsPoint& aFirstContinuationToUserSpace, bool aInReflow) {
NS_ASSERTION(!aFirstContinuation->GetPrevContinuation(),
"Need first continuation here");
PreEffectsVisualOverflowCollector collector(aFirstContinuation, aCurrentFrame,
aCurrentFramePreEffectsOverflow,
aInReflow);
PreEffectsInkOverflowCollector collector(aFirstContinuation, aCurrentFrame,
aCurrentFramePreEffectsOverflow,
aInReflow);
// Compute union of all overflow areas relative to aFirstContinuation:
nsLayoutUtils::GetAllInFlowBoxes(aFirstContinuation, &collector);
// Return the result in user space:
@ -133,15 +132,15 @@ static nsRect GetPreEffectsVisualOverflowUnion(
}
/**
* Gets the pre-effects visual overflow rect of aCurrentFrame in "user space".
* Gets the pre-effects ink overflow rect of aCurrentFrame in "user space".
*/
static nsRect GetPreEffectsVisualOverflow(
static nsRect GetPreEffectsInkOverflow(
nsIFrame* aFirstContinuation, nsIFrame* aCurrentFrame,
const nsPoint& aFirstContinuationToUserSpace) {
NS_ASSERTION(!aFirstContinuation->GetPrevContinuation(),
"Need first continuation here");
PreEffectsVisualOverflowCollector collector(aFirstContinuation, nullptr,
nsRect(), false);
PreEffectsInkOverflowCollector collector(aFirstContinuation, nullptr,
nsRect(), false);
// Compute overflow areas of current frame relative to aFirstContinuation:
nsLayoutUtils::AddBoxesForFrame(aCurrentFrame, &collector);
// Return the result in user space:
@ -235,13 +234,12 @@ gfxRect SVGIntegrationUtils::GetSVGBBoxForNonSVGFrame(
nsIFrame* firstFrame =
nsLayoutUtils::FirstContinuationOrIBSplitSibling(aNonSVGFrame);
// 'r' is in "user space":
nsRect r =
(aUnionContinuations)
? GetPreEffectsVisualOverflowUnion(firstFrame, nullptr, nsRect(),
GetOffsetToBoundingBox(firstFrame),
false)
: GetPreEffectsVisualOverflow(firstFrame, aNonSVGFrame,
GetOffsetToBoundingBox(firstFrame));
nsRect r = (aUnionContinuations)
? GetPreEffectsInkOverflowUnion(
firstFrame, nullptr, nsRect(),
GetOffsetToBoundingBox(firstFrame), false)
: GetPreEffectsInkOverflow(firstFrame, aNonSVGFrame,
GetOffsetToBoundingBox(firstFrame));
return nsLayoutUtils::RectToGfxRect(r, AppUnitsPerCSSPixel());
}
@ -250,22 +248,22 @@ gfxRect SVGIntegrationUtils::GetSVGBBoxForNonSVGFrame(
// continuations. When we're called for a frame with continuations, we're
// called for each continuation in turn as it's reflowed. However, it isn't
// until the last continuation is reflowed that this method's
// GetOffsetToBoundingBox() and GetPreEffectsVisualOverflowUnion() calls will
// GetOffsetToBoundingBox() and GetPreEffectsInkOverflowUnion() calls will
// obtain valid border boxes for all the continuations. As a result, we'll
// end up returning bogus post-filter visual overflow rects for all the prior
// end up returning bogus post-filter ink overflow rects for all the prior
// continuations. Unfortunately, by the time the last continuation is
// reflowed, it's too late to go back and set and propagate the overflow
// rects on the previous continuations.
//
// The reason that we need to pass an override bbox to
// GetPreEffectsVisualOverflowUnion rather than just letting it call into our
// GetPreEffectsInkOverflowUnion rather than just letting it call into our
// GetSVGBBoxForNonSVGFrame method is because we get called by
// ComputeEffectsRect when it has been called with
// aStoreRectProperties set to false. In this case the pre-effects visual
// overflow rect that it has been passed may be different to that stored on
// aFrame, resulting in a different bbox.
//
// XXXjwatt The pre-effects visual overflow rect passed to
// XXXjwatt The pre-effects ink overflow rect passed to
// ComputeEffectsRect won't include continuation overflows, so
// for frames with continuation the following filter analysis will likely end
// up being carried out with a bbox created as if the frame didn't have
@ -273,12 +271,12 @@ gfxRect SVGIntegrationUtils::GetSVGBBoxForNonSVGFrame(
//
// XXXjwatt Using aPreEffectsOverflowRect to create the bbox isn't really right
// for SVG frames, since for SVG frames the SVG spec defines the bbox to be
// something quite different to the pre-effects visual overflow rect. However,
// something quite different to the pre-effects ink overflow rect. However,
// we're essentially calculating an invalidation area here, and using the
// pre-effects overflow rect will actually overestimate that area which, while
// being a bit wasteful, isn't otherwise a problem.
//
nsRect SVGIntegrationUtils::ComputePostEffectsVisualOverflowRect(
nsRect SVGIntegrationUtils::ComputePostEffectsInkOverflowRect(
nsIFrame* aFrame, const nsRect& aPreEffectsOverflowRect) {
MOZ_ASSERT(!aFrame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT),
"Don't call this on SVG child frames");
@ -307,9 +305,8 @@ nsRect SVGIntegrationUtils::ComputePostEffectsVisualOverflowRect(
// XXX Why are we rounding out to pixel boundaries? We don't do that in
// GetSVGBBoxForNonSVGFrame, and it doesn't appear to be necessary.
gfxRect overrideBBox = nsLayoutUtils::RectToGfxRect(
GetPreEffectsVisualOverflowUnion(firstFrame, aFrame,
aPreEffectsOverflowRect,
firstFrameToBoundingBox, true),
GetPreEffectsInkOverflowUnion(firstFrame, aFrame, aPreEffectsOverflowRect,
firstFrameToBoundingBox, true),
AppUnitsPerCSSPixel());
overrideBBox.RoundOut();

Просмотреть файл

@ -104,7 +104,7 @@ class SVGIntegrationUtils final {
bool aUnionContinuations);
/**
* Used to adjust a frame's pre-effects visual overflow rect to take account
* Used to adjust a frame's pre-effects ink overflow rect to take account
* of SVG effects.
*
* XXX This method will not do the right thing for frames with continuations.
@ -116,7 +116,7 @@ class SVGIntegrationUtils final {
* the last continuation is reflowed. See:
* http://groups.google.com/group/mozilla.dev.tech.layout/msg/6b179066f3051f65
*/
static nsRect ComputePostEffectsVisualOverflowRect(
static nsRect ComputePostEffectsInkOverflowRect(
nsIFrame* aFrame, const nsRect& aPreEffectsOverflowRect);
/**

Просмотреть файл

@ -265,8 +265,8 @@ class SVGObserverUtils {
* NOTE! A return value of eHasNoRefs does NOT mean that there are no filters
* to be applied, only that there are no references to SVG filter elements.
*
* XXX Callers other than ComputePostEffectsVisualOverflowRect and
* SVGUtils::GetPostFilterVisualOverflowRect should not need to initiate
* XXX Callers other than ComputePostEffectsInkOverflowRect and
* SVGUtils::GetPostFilterInkOverflowRect should not need to initiate
* observing. If we have a bug that causes invalidation (which would remove
* observers) between reflow and painting, then we don't really want to
* re-add abservers during painting. That has the potential to hide logic

Просмотреть файл

@ -465,7 +465,7 @@ void SVGOuterSVGFrame::Reflow(nsPresContext* aPresContext,
if (HasAnyStateBits(NS_FRAME_IS_NONDISPLAY)) {
ReflowSVGNonDisplayText(this);
} else {
// Update the mRects and visual overflow rects of all our descendants,
// Update the mRects and ink overflow rects of all our descendants,
// including our anonymous wrapper kid:
anonKid->ReflowSVG();
MOZ_ASSERT(!anonKid->GetNextSibling(),
@ -487,10 +487,10 @@ void SVGOuterSVGFrame::Reflow(nsPresContext* aPresContext,
// <svg> never allows scrolling to anything outside its mRect (only panning),
// so we must always keep our scrollable overflow set to our size.
//
// With regards to visual overflow, we always clip root-<svg> (see our
// With regards to ink overflow, we always clip root-<svg> (see our
// BuildDisplayList method) regardless of the value of the 'overflow'
// property since that is per-spec, even for the initial 'visible' value. For
// that reason there's no point in adding descendant visual overflow to our
// that reason there's no point in adding descendant ink overflow to our
// own when this frame is for a root-<svg>. That said, there's also a very
// good performance reason for us wanting to avoid doing so. If we did, then
// the frame's overflow would often change as descendants that are partially
@ -498,7 +498,7 @@ void SVGOuterSVGFrame::Reflow(nsPresContext* aPresContext,
// would cause us to do a full NS_FRAME_IS_DIRTY reflow and repaint of the
// entire document tree each such move (see bug 875175).
//
// So it's only non-root outer-<svg> that has the visual overflow of its
// So it's only non-root outer-<svg> that has the ink overflow of its
// descendants added to its own. (Note that the default user-agent style
// sheet makes 'hidden' the default value for :not(root(svg)), so usually
// FinishAndStoreOverflow will still clip this back to the frame's rect.)
@ -512,9 +512,9 @@ void SVGOuterSVGFrame::Reflow(nsPresContext* aPresContext,
// processing test. In that case, we don't maintain its overflow.
if (!HasAnyStateBits(NS_FRAME_IS_NONDISPLAY)) {
if (!mIsRootContent) {
aDesiredSize.mOverflowAreas.VisualOverflow().UnionRect(
aDesiredSize.mOverflowAreas.VisualOverflow(),
anonKid->GetVisualOverflowRect() + anonKid->GetPosition());
aDesiredSize.mOverflowAreas.InkOverflow().UnionRect(
aDesiredSize.mOverflowAreas.InkOverflow(),
anonKid->InkOverflowRect() + anonKid->GetPosition());
}
FinishAndStoreOverflow(&aDesiredSize);
}
@ -542,9 +542,9 @@ void SVGOuterSVGFrame::UnionChildOverflow(nsOverflowAreas& aOverflowAreas) {
if (!mIsRootContent) {
nsIFrame* anonKid = PrincipalChildList().FirstChild();
aOverflowAreas.VisualOverflow().UnionRect(
aOverflowAreas.VisualOverflow(),
anonKid->GetVisualOverflowRect() + anonKid->GetPosition());
aOverflowAreas.InkOverflow().UnionRect(
aOverflowAreas.InkOverflow(),
anonKid->InkOverflowRect() + anonKid->GetPosition());
}
}
@ -776,7 +776,7 @@ void SVGOuterSVGFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
nsRect dirtyRect = aBuilder->GetDirtyRect();
// Per-spec, we always clip root-<svg> even when 'overflow' has its initial
// value of 'visible'. See also the "visual overflow" comments in Reflow.
// value of 'visible'. See also the "ink overflow" comments in Reflow.
DisplayListClipState::AutoSaveRestore autoSR(aBuilder);
if (mIsRootContent || StyleDisplay()->IsScrollableOverflow()) {
autoSR.ClipContainingBlockDescendantsToContentBox(aBuilder, this);

Просмотреть файл

@ -804,11 +804,11 @@ SVGBBox TextRenderedRun::GetRunUserSpaceRect(nsPresContext* aContext,
// Determine the amount of overflow above and below the frame's mRect.
//
// We need to call GetVisualOverflowRectRelativeToSelf because this includes
// We need to call InkOverflowRectRelativeToSelf because this includes
// overflowing decorations, which the MeasureText call below does not. We
// assume here the decorations only overflow above and below the frame, never
// horizontally.
nsRect self = mFrame->GetVisualOverflowRectRelativeToSelf();
nsRect self = mFrame->InkOverflowRectRelativeToSelf();
nsRect rect = mFrame->GetRect();
bool vertical = IsVertical();
nscoord above = vertical ? -self.x : -self.y;
@ -3210,8 +3210,8 @@ void SVGTextFrame::PaintSVG(gfxContext& aContext, const gfxMatrix& aTransform,
bool paintSVGGlyphs;
nsTextFrame::PaintTextParams params(&aContext);
params.framePt = Point();
params.dirtyRect = LayoutDevicePixel::FromAppUnits(
frame->GetVisualOverflowRect(), auPerDevPx);
params.dirtyRect =
LayoutDevicePixel::FromAppUnits(frame->InkOverflowRect(), auPerDevPx);
params.contextPaint = contextPaint;
const bool isSelected = frame->IsSelected();

Просмотреть файл

@ -112,8 +112,8 @@ bool SVGAutoRenderState::IsPaintingToWindow(DrawTarget* aDrawTarget) {
return false;
}
nsRect SVGUtils::GetPostFilterVisualOverflowRect(nsIFrame* aFrame,
const nsRect& aPreFilterRect) {
nsRect SVGUtils::GetPostFilterInkOverflowRect(nsIFrame* aFrame,
const nsRect& aPreFilterRect) {
MOZ_ASSERT(aFrame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT),
"Called on invalid frame type");
@ -539,11 +539,11 @@ class MixModeBlender {
gfxContextAutoSaveRestore saver(mSourceCtx);
if (!mFrame->HasAnyStateBits(NS_FRAME_IS_NONDISPLAY)) {
// aFrame has a valid visual overflow rect, so clip to it before calling
// aFrame has a valid ink overflow rect, so clip to it before calling
// PushGroup() to minimize the size of the surfaces we'll composite:
gfxContextMatrixAutoSaveRestore matrixAutoSaveRestore(mSourceCtx);
mSourceCtx->Multiply(aTransform);
nsRect overflowRect = mFrame->GetVisualOverflowRectRelativeToSelf();
nsRect overflowRect = mFrame->InkOverflowRectRelativeToSelf();
if (mFrame->IsSVGGeometryFrameOrSubclass() ||
SVGUtils::IsInSVGTextSubtree(mFrame)) {
// Unlike containers, leaf frames do not include GetPosition() in
@ -604,7 +604,7 @@ void SVGUtils::PaintFrameWithEffects(nsIFrame* aFrame, gfxContext& aContext,
// compare it to aDirtyRect, and return early if they don't intersect.
// We don't do this optimization for nondisplay SVG since nondisplay
// SVG doesn't maintain bounds/overflow rects.
nsRect overflowRect = aFrame->GetVisualOverflowRectRelativeToSelf();
nsRect overflowRect = aFrame->InkOverflowRectRelativeToSelf();
if (aFrame->IsSVGGeometryFrameOrSubclass() ||
SVGUtils::IsInSVGTextSubtree(aFrame)) {
// Unlike containers, leaf frames do not include GetPosition() in

Просмотреть файл

@ -165,12 +165,12 @@ class SVGUtils final {
NS_DECLARE_FRAME_PROPERTY_DELETABLE(ObjectBoundingBoxProperty, gfxRect)
/**
* Returns the frame's post-filter visual overflow rect when passed the
* frame's pre-filter visual overflow rect. If the frame is not currently
* Returns the frame's post-filter ink overflow rect when passed the
* frame's pre-filter ink overflow rect. If the frame is not currently
* being filtered, this function simply returns aUnfilteredRect.
*/
static nsRect GetPostFilterVisualOverflowRect(nsIFrame* aFrame,
const nsRect& aPreFilterRect);
static nsRect GetPostFilterInkOverflowRect(nsIFrame* aFrame,
const nsRect& aPreFilterRect);
/**
* Schedules an update of the frame's bounds (which will in turn invalidate

Просмотреть файл

@ -62,7 +62,7 @@ class SVGViewFrame final : public nsIFrame {
int32_t aModType) override;
virtual bool ComputeCustomOverflow(nsOverflowAreas& aOverflowAreas) override {
// We don't maintain a visual overflow rect
// We don't maintain a ink overflow rect
return false;
}
};

Просмотреть файл

@ -392,8 +392,8 @@ void nsTableCellFrame::InvalidateFrame(uint32_t aDisplayItemKey,
bool aRebuildDisplayItems) {
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
if (GetTableFrame()->IsBorderCollapse()) {
GetParent()->InvalidateFrameWithRect(
GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
GetParent()->InvalidateFrameWithRect(InkOverflowRect() + GetPosition(),
aDisplayItemKey, false);
}
}
@ -622,7 +622,7 @@ void nsTableCellFrame::BlockDirAlignChild(WritingMode aWM, nscoord aMaxAscent) {
}
if (HasView()) {
nsContainerFrame::SyncFrameViewAfterReflow(PresContext(), this, GetView(),
desiredSize.VisualOverflow(),
desiredSize.InkOverflow(),
ReflowChildFlags::Default);
}
}
@ -904,7 +904,7 @@ void nsTableCellFrame::Reflow(nsPresContext* aPresContext,
LogicalPoint kidOrigin(wm, borderPadding.IStart(wm),
borderPadding.BStart(wm));
nsRect origRect = firstKid->GetRect();
nsRect origVisualOverflow = firstKid->GetVisualOverflowRect();
nsRect origInkOverflow = firstKid->InkOverflowRect();
bool firstReflow = firstKid->HasAnyStateBits(NS_FRAME_FIRST_REFLOW);
ReflowChild(firstKid, aPresContext, kidSize, kidReflowInput, wm, kidOrigin,
@ -943,7 +943,7 @@ void nsTableCellFrame::Reflow(nsPresContext* aPresContext,
kidOrigin, containerSize, ReflowChildFlags::Default);
if (tableFrame->IsBorderCollapse()) {
nsTableFrame::InvalidateTableFrame(firstKid, origRect, origVisualOverflow,
nsTableFrame::InvalidateTableFrame(firstKid, origRect, origInkOverflow,
firstReflow);
}
// first, compute the bsize which can be set w/o being restricted by

Просмотреть файл

@ -188,8 +188,8 @@ void nsTableColFrame::InvalidateFrame(uint32_t aDisplayItemKey,
bool aRebuildDisplayItems) {
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
if (GetTableFrame()->IsBorderCollapse()) {
GetParent()->InvalidateFrameWithRect(
GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
GetParent()->InvalidateFrameWithRect(InkOverflowRect() + GetPosition(),
aDisplayItemKey, false);
}
}

Просмотреть файл

@ -424,8 +424,8 @@ void nsTableColGroupFrame::InvalidateFrame(uint32_t aDisplayItemKey,
bool aRebuildDisplayItems) {
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
if (GetTableFrame()->IsBorderCollapse()) {
GetParent()->InvalidateFrameWithRect(
GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
GetParent()->InvalidateFrameWithRect(InkOverflowRect() + GetPosition(),
aDisplayItemKey, false);
}
}

Просмотреть файл

@ -1121,7 +1121,7 @@ void nsTableFrame::GetChildLists(nsTArray<ChildList>* aLists) const {
nsRect nsDisplayTableItem::GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap) const {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
void nsDisplayTableItem::UpdateForFrameBackground(nsIFrame* aFrame) {
@ -2671,7 +2671,7 @@ void nsTableFrame::PlaceChild(TableReflowInput& aReflowInput,
const nsSize& aContainerSize,
ReflowOutput& aKidDesiredSize,
const nsRect& aOriginalKidRect,
const nsRect& aOriginalKidVisualOverflow) {
const nsRect& aOriginalKidInkOverflow) {
WritingMode wm = aReflowInput.reflowInput.GetWritingMode();
bool isFirstReflow = aKidFrame->HasAnyStateBits(NS_FRAME_FIRST_REFLOW);
@ -2680,7 +2680,7 @@ void nsTableFrame::PlaceChild(TableReflowInput& aReflowInput,
wm, aKidPosition, aContainerSize,
ReflowChildFlags::ApplyRelativePositioning);
InvalidateTableFrame(aKidFrame, aOriginalKidRect, aOriginalKidVisualOverflow,
InvalidateTableFrame(aKidFrame, aOriginalKidRect, aOriginalKidInkOverflow,
isFirstReflow);
// Adjust the running block-offset
@ -2803,7 +2803,7 @@ void nsTableFrame::PlaceRepeatedFooter(TableReflowInput& aReflowInput,
aReflowInput.bCoord += GetRowSpacing(GetRowCount());
nsRect origTfootRect = aTfoot->GetRect();
nsRect origTfootVisualOverflow = aTfoot->GetVisualOverflowRect();
nsRect origTfootInkOverflow = aTfoot->InkOverflowRect();
nsReflowStatus footerStatus;
ReflowOutput desiredSize(aReflowInput.reflowInput);
@ -2814,8 +2814,7 @@ void nsTableFrame::PlaceRepeatedFooter(TableReflowInput& aReflowInput,
footerStatus);
PlaceChild(aReflowInput, aTfoot, footerReflowInput, kidPosition,
containerSize, desiredSize, origTfootRect,
origTfootVisualOverflow);
containerSize, desiredSize, origTfootRect, origTfootInkOverflow);
}
// Reflow the children based on the avail size and reason in aReflowInput
@ -2934,7 +2933,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
}
nsRect oldKidRect = kidFrame->GetRect();
nsRect oldKidVisualOverflow = kidFrame->GetVisualOverflowRect();
nsRect oldKidInkOverflow = kidFrame->InkOverflowRect();
ReflowOutput desiredSize(aReflowInput.reflowInput);
desiredSize.ClearSize();
@ -3000,7 +2999,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
if (nextRowGroupFrame) {
PlaceChild(aReflowInput, kidFrame, kidReflowInput, kidPosition,
containerSize, desiredSize, oldKidRect,
oldKidVisualOverflow);
oldKidInkOverflow);
if (allowRepeatedFooter) {
PlaceRepeatedFooter(aReflowInput, tfoot, footerHeight);
} else if (tfoot && tfoot->IsRepeatable()) {
@ -3028,7 +3027,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
} else { // we can't push so lets make clear how much space we need
PlaceChild(aReflowInput, kidFrame, kidReflowInput, kidPosition,
containerSize, desiredSize, oldKidRect,
oldKidVisualOverflow);
oldKidInkOverflow);
aLastChildReflowed = kidFrame;
if (allowRepeatedFooter) {
PlaceRepeatedFooter(aReflowInput, tfoot, footerHeight);
@ -3053,7 +3052,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
// Place the child
PlaceChild(aReflowInput, kidFrame, kidReflowInput, kidPosition,
containerSize, desiredSize, oldKidRect, oldKidVisualOverflow);
containerSize, desiredSize, oldKidRect, oldKidInkOverflow);
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
@ -3309,7 +3308,7 @@ void nsTableFrame::DistributeBSizeToRows(const ReflowInput& aReflowInput,
}
nsRect origRgNormalRect = rgFrame->GetRect();
nsRect origRgVisualOverflow = rgFrame->GetVisualOverflowRect();
nsRect origRgInkOverflow = rgFrame->InkOverflowRect();
rgFrame->MovePositionBy(
wm, LogicalPoint(wm, 0, bOriginRG - rgNormalRect.BStart(wm)));
@ -3318,7 +3317,7 @@ void nsTableFrame::DistributeBSizeToRows(const ReflowInput& aReflowInput,
rgNormalRect.BSize(wm) + amountUsedByRG));
nsTableFrame::InvalidateTableFrame(rgFrame, origRgNormalRect,
origRgVisualOverflow, false);
origRgInkOverflow, false);
}
} else if (amountUsed > 0 && bOriginRG != rgNormalRect.BStart(wm)) {
rgFrame->InvalidateFrameSubtree();
@ -3402,7 +3401,7 @@ void nsTableFrame::DistributeBSizeToRows(const ReflowInput& aReflowInput,
nscoord amountUsedByRG = 0;
nscoord bOriginRow = 0;
LogicalRect rgNormalRect(wm, rgFrame->GetNormalRect(), containerSize);
nsRect rgVisualOverflow = rgFrame->GetVisualOverflowRect();
nsRect rgInkOverflow = rgFrame->InkOverflowRect();
// see if there is an eligible row group or we distribute to all rows
if (!firstUnStyledRG || !rgFrame->HasStyleBSize() || !eligibleRows) {
for (nsTableRowFrame* rowFrame = rgFrame->GetFirstRow(); rowFrame;
@ -3414,7 +3413,7 @@ void nsTableFrame::DistributeBSizeToRows(const ReflowInput& aReflowInput,
const nsSize dummyContainerSize;
LogicalRect rowNormalRect(wm, rowFrame->GetNormalRect(),
dummyContainerSize);
nsRect rowVisualOverflow = rowFrame->GetVisualOverflowRect();
nsRect rowInkOverflow = rowFrame->InkOverflowRect();
// see if there is an eligible row or we distribute to all rows
if (!firstUnStyledRow || !rowFrame->HasStyleBSize() || !eligibleRows) {
float ratio;
@ -3461,7 +3460,7 @@ void nsTableFrame::DistributeBSizeToRows(const ReflowInput& aReflowInput,
nsTableFrame::RePositionViews(rowFrame);
nsTableFrame::InvalidateTableFrame(rowFrame, origRowRect,
rowVisualOverflow, false);
rowInkOverflow, false);
} else {
if (amountUsed > 0 && bOriginRow != rowNormalRect.BStart(wm)) {
rowFrame->InvalidateFrameSubtree();
@ -3488,7 +3487,7 @@ void nsTableFrame::DistributeBSizeToRows(const ReflowInput& aReflowInput,
rgNormalRect.BSize(wm) + amountUsedByRG));
nsTableFrame::InvalidateTableFrame(rgFrame, origRgNormalRect,
rgVisualOverflow, false);
rgInkOverflow, false);
}
// For vertical-rl mode, we needed to position the rows relative to the
@ -7406,7 +7405,7 @@ bool nsTableFrame::RowIsSpannedInto(int32_t aRowIndex, int32_t aNumEffCols) {
/* static */
void nsTableFrame::InvalidateTableFrame(nsIFrame* aFrame,
const nsRect& aOrigRect,
const nsRect& aOrigVisualOverflow,
const nsRect& aOrigInkOverflow,
bool aIsFirstReflow) {
nsIFrame* parent = aFrame->GetParent();
NS_ASSERTION(parent, "What happened here?");
@ -7423,20 +7422,20 @@ void nsTableFrame::InvalidateTableFrame(nsIFrame* aFrame,
//
// This doesn't really make sense now that we have DLBI.
// This code can probably be simplified a fair bit.
nsRect visualOverflow = aFrame->GetVisualOverflowRect();
nsRect inkOverflow = aFrame->InkOverflowRect();
if (aIsFirstReflow || aOrigRect.TopLeft() != aFrame->GetPosition() ||
aOrigVisualOverflow.TopLeft() != visualOverflow.TopLeft()) {
aOrigInkOverflow.TopLeft() != inkOverflow.TopLeft()) {
// Invalidate the old and new overflow rects. Note that if the
// frame moved, we can't just use aOrigVisualOverflow, since it's in
// frame moved, we can't just use aOrigInkOverflow, since it's in
// coordinates relative to the old position. So invalidate via
// aFrame's parent, and reposition that overflow rect to the right
// place.
// XXXbz this doesn't handle outlines, does it?
aFrame->InvalidateFrame();
parent->InvalidateFrameWithRect(aOrigVisualOverflow + aOrigRect.TopLeft());
parent->InvalidateFrameWithRect(aOrigInkOverflow + aOrigRect.TopLeft());
} else if (aOrigRect.Size() != aFrame->GetSize() ||
aOrigVisualOverflow.Size() != visualOverflow.Size()) {
aFrame->InvalidateFrameWithRect(aOrigVisualOverflow);
aOrigInkOverflow.Size() != inkOverflow.Size()) {
aFrame->InvalidateFrameWithRect(aOrigInkOverflow);
aFrame->InvalidateFrame();
}
}

Просмотреть файл

@ -545,12 +545,12 @@ class nsTableFrame : public nsContainerFrame {
*
* @param aFrame The frame to invalidate
* @param aOrigRect The original rect of aFrame (before the change).
* @param aOrigVisualOverflow The original overflow rect of aFrame.
* @param aOrigInkOverflow The original overflow rect of aFrame.
* @param aIsFirstReflow True if the size/position change is due to the
* first reflow of aFrame.
*/
static void InvalidateTableFrame(nsIFrame* aFrame, const nsRect& aOrigRect,
const nsRect& aOrigVisualOverflow,
const nsRect& aOrigInkOverflow,
bool aIsFirstReflow);
virtual bool ComputeCustomOverflow(nsOverflowAreas& aOverflowAreas) override;
@ -664,7 +664,7 @@ class nsTableFrame : public nsContainerFrame {
const mozilla::LogicalPoint& aKidPosition,
const nsSize& aContainerSize, ReflowOutput& aKidDesiredSize,
const nsRect& aOriginalKidRect,
const nsRect& aOriginalKidVisualOverflow);
const nsRect& aOriginalKidInkOverflow);
void PlaceRepeatedFooter(TableReflowInput& aReflowInput,
nsTableRowGroupFrame* aTfoot, nscoord aFooterHeight);

Просмотреть файл

@ -322,7 +322,7 @@ void nsTableRowFrame::DidResize() {
LogicalSize cellSize = cellFrame->GetLogicalSize(wm);
if (cellSize.BSize(wm) != cellBSize || wm.IsVerticalRL()) {
nsRect cellOldRect = cellFrame->GetRect();
nsRect cellVisualOverflow = cellFrame->GetVisualOverflowRect();
nsRect cellInkOverflow = cellFrame->InkOverflowRect();
if (wm.IsVerticalRL()) {
// Get the old position of the cell, as we want to preserve its
@ -359,7 +359,7 @@ void nsTableRowFrame::DidResize() {
nsTableFrame* tableFrame = GetTableFrame();
if (tableFrame->IsBorderCollapse()) {
nsTableFrame::InvalidateTableFrame(cellFrame, cellOldRect,
cellVisualOverflow, false);
cellInkOverflow, false);
}
}
@ -378,7 +378,7 @@ void nsTableRowFrame::DidResize() {
FinishAndStoreOverflow(&desiredSize);
if (HasView()) {
nsContainerFrame::SyncFrameViewAfterReflow(PresContext(), this, GetView(),
desiredSize.VisualOverflow(),
desiredSize.InkOverflow(),
ReflowChildFlags::Default);
}
// Let our base class do the usual work
@ -771,7 +771,7 @@ void nsTableRowFrame::ReflowChildren(nsPresContext* aPresContext,
NS_ASSERTION(origKidNormalPosition.B(wm) == 0 || wm.IsVerticalRL(),
"unexpected kid position");
nsRect kidVisualOverflow = kidFrame->GetVisualOverflowRect();
nsRect kidInkOverflow = kidFrame->InkOverflowRect();
LogicalPoint kidPosition(wm, iCoord, 0);
bool firstReflow = kidFrame->HasAnyStateBits(NS_FRAME_FIRST_REFLOW);
@ -902,7 +902,7 @@ void nsTableRowFrame::ReflowChildren(nsPresContext* aPresContext,
nsTableFrame* tableFrame = GetTableFrame();
if (tableFrame->IsBorderCollapse()) {
nsTableFrame::InvalidateTableFrame(kidFrame, kidRect, kidVisualOverflow,
nsTableFrame::InvalidateTableFrame(kidFrame, kidRect, kidInkOverflow,
firstReflow);
}
@ -1057,7 +1057,7 @@ nscoord nsTableRowFrame::ReflowCellFrame(nsPresContext* aPresContext,
// Reflow the cell frame with the specified height. Use the existing width
nsSize containerSize = aCellFrame->GetSize();
LogicalRect cellRect = aCellFrame->GetLogicalRect(wm, containerSize);
nsRect cellVisualOverflow = aCellFrame->GetVisualOverflowRect();
nsRect cellInkOverflow = aCellFrame->InkOverflowRect();
LogicalSize cellSize = cellRect.Size(wm);
LogicalSize availSize(wm, cellRect.ISize(wm), aAvailableBSize);
@ -1090,8 +1090,8 @@ nscoord nsTableRowFrame::ReflowCellFrame(nsPresContext* aPresContext,
}
nsTableFrame::InvalidateTableFrame(
aCellFrame, cellRect.GetPhysicalRect(wm, containerSize),
cellVisualOverflow, aCellFrame->HasAnyStateBits(NS_FRAME_FIRST_REFLOW));
aCellFrame, cellRect.GetPhysicalRect(wm, containerSize), cellInkOverflow,
aCellFrame->HasAnyStateBits(NS_FRAME_FIRST_REFLOW));
aCellFrame->DidReflow(aPresContext, nullptr);
@ -1120,7 +1120,7 @@ nscoord nsTableRowFrame::CollapseRowIfNecessary(nscoord aRowOffset,
nsSize parentSize = GetParent()->GetSize();
LogicalRect rowRect = GetLogicalRect(wm, parentSize);
nsRect oldRect = mRect;
nsRect oldVisualOverflow = GetVisualOverflowRect();
nsRect oldInkOverflow = InkOverflowRect();
rowRect.BStart(wm) -= aRowOffset;
rowRect.ISize(wm) = aISize;
@ -1226,7 +1226,7 @@ nscoord nsTableRowFrame::CollapseRowIfNecessary(nscoord aRowOffset,
LogicalPoint oldCellNormalPos =
cellFrame->GetLogicalNormalPosition(wm, containerSize);
nsRect oldCellVisualOverflow = cellFrame->GetVisualOverflowRect();
nsRect oldCellInkOverflow = cellFrame->InkOverflowRect();
if (aRowOffset == 0 && cRect.Origin(wm) != oldCellNormalPos) {
// We're moving the cell. Invalidate the old overflow area
@ -1249,7 +1249,7 @@ nscoord nsTableRowFrame::CollapseRowIfNecessary(nscoord aRowOffset,
if (aRowOffset == 0) {
nsTableFrame::InvalidateTableFrame(cellFrame, oldCellRect,
oldCellVisualOverflow, false);
oldCellInkOverflow, false);
}
}
}
@ -1260,7 +1260,7 @@ nscoord nsTableRowFrame::CollapseRowIfNecessary(nscoord aRowOffset,
FinishAndStoreOverflow(overflow, rowRect.Size(wm).GetPhysicalSize(wm));
nsTableFrame::RePositionViews(this);
nsTableFrame::InvalidateTableFrame(this, oldRect, oldVisualOverflow, false);
nsTableFrame::InvalidateTableFrame(this, oldRect, oldInkOverflow, false);
return shift;
}
@ -1367,8 +1367,8 @@ void nsTableRowFrame::InvalidateFrame(uint32_t aDisplayItemKey,
bool aRebuildDisplayItems) {
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
if (GetTableFrame()->IsBorderCollapse()) {
GetParent()->InvalidateFrameWithRect(
GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
GetParent()->InvalidateFrameWithRect(InkOverflowRect() + GetPosition(),
aDisplayItemKey, false);
}
}

Просмотреть файл

@ -242,7 +242,7 @@ void nsTableRowGroupFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
DisplayOutsetBoxShadow(aBuilder, aLists.BorderBackground());
for (nsTableRowFrame* row = GetFirstRow(); row; row = row->GetNextRow()) {
if (!aBuilder->GetDirtyRect().Intersects(row->GetVisualOverflowRect() +
if (!aBuilder->GetDirtyRect().Intersects(row->InkOverflowRect() +
row->GetNormalPosition())) {
continue;
}
@ -280,7 +280,7 @@ void nsTableRowGroupFrame::PlaceChild(
nsIFrame* aKidFrame, const ReflowInput& aKidReflowInput, WritingMode aWM,
const LogicalPoint& aKidPosition, const nsSize& aContainerSize,
ReflowOutput& aDesiredSize, const nsRect& aOriginalKidRect,
const nsRect& aOriginalKidVisualOverflow) {
const nsRect& aOriginalKidInkOverflow) {
bool isFirstReflow = aKidFrame->HasAnyStateBits(NS_FRAME_FIRST_REFLOW);
// Place and size the child
@ -290,8 +290,8 @@ void nsTableRowGroupFrame::PlaceChild(
nsTableFrame* tableFrame = GetTableFrame();
if (tableFrame->IsBorderCollapse()) {
nsTableFrame::InvalidateTableFrame(
aKidFrame, aOriginalKidRect, aOriginalKidVisualOverflow, isFirstReflow);
nsTableFrame::InvalidateTableFrame(aKidFrame, aOriginalKidRect,
aOriginalKidInkOverflow, isFirstReflow);
}
// Adjust the running block-offset
@ -376,7 +376,7 @@ void nsTableRowGroupFrame::ReflowChildren(
(isPaginated ||
kidFrame->HasAnyStateBits(NS_FRAME_CONTAINS_RELATIVE_BSIZE)))) {
LogicalRect oldKidRect = kidFrame->GetLogicalRect(wm, containerSize);
nsRect oldKidVisualOverflow = kidFrame->GetVisualOverflowRect();
nsRect oldKidInkOverflow = kidFrame->InkOverflowRect();
ReflowOutput desiredSize(aReflowInput.reflowInput);
desiredSize.ClearSize();
@ -413,7 +413,7 @@ void nsTableRowGroupFrame::ReflowChildren(
PlaceChild(aPresContext, aReflowInput, kidFrame, kidReflowInput, wm,
kidPosition, containerSize, desiredSize,
oldKidRect.GetPhysicalRect(wm, containerSize),
oldKidVisualOverflow);
oldKidInkOverflow);
aReflowInput.bCoord += cellSpacingB;
if (!reflowAllKids) {
@ -828,7 +828,7 @@ void nsTableRowGroupFrame::CalculateRowBSizes(nsPresContext* aPresContext,
rowFrame = rowFrame->GetNextRow(), rowIndex++) {
nsRect rowBounds = rowFrame->GetRect();
LogicalSize rowBoundsSize(wm, rowBounds.Size());
nsRect rowVisualOverflow = rowFrame->GetVisualOverflowRect();
nsRect rowInkOverflow = rowFrame->InkOverflowRect();
nscoord deltaB =
bOrigin - rowFrame->GetLogicalNormalPosition(wm, containerSize).B(wm);
@ -844,7 +844,7 @@ void nsTableRowGroupFrame::CalculateRowBSizes(nsPresContext* aPresContext,
rowFrame->MovePositionBy(wm, LogicalPoint(wm, 0, deltaB));
rowFrame->SetSize(LogicalSize(wm, rowBoundsSize.ISize(wm), rowBSize));
nsTableFrame::InvalidateTableFrame(rowFrame, rowBounds, rowVisualOverflow,
nsTableFrame::InvalidateTableFrame(rowFrame, rowBounds, rowInkOverflow,
false);
if (deltaB != 0) {
@ -891,7 +891,7 @@ nscoord nsTableRowGroupFrame::CollapseRowGroupIfNecessary(nscoord aBTotalOffset,
LogicalRect groupRect = GetLogicalRect(aWM, containerSize);
nsRect oldGroupRect = GetRect();
nsRect oldGroupVisualOverflow = GetVisualOverflowRect();
nsRect oldGroupInkOverflow = InkOverflowRect();
groupRect.BSize(aWM) -= bGroupOffset;
if (didCollapse) {
@ -912,7 +912,7 @@ nscoord nsTableRowGroupFrame::CollapseRowGroupIfNecessary(nscoord aBTotalOffset,
nsRect(0, 0, groupRect.Width(aWM), groupRect.Height(aWM)));
FinishAndStoreOverflow(overflow, groupRect.Size(aWM).GetPhysicalSize(aWM));
nsTableFrame::RePositionViews(this);
nsTableFrame::InvalidateTableFrame(this, oldGroupRect, oldGroupVisualOverflow,
nsTableFrame::InvalidateTableFrame(this, oldGroupRect, oldGroupInkOverflow,
false);
return bGroupOffset;
@ -1150,7 +1150,7 @@ nsresult nsTableRowGroupFrame::SplitRowGroup(nsPresContext* aPresContext,
// Get the old size before we reflow.
nsRect oldRowRect = rowFrame->GetRect();
nsRect oldRowVisualOverflow = rowFrame->GetVisualOverflowRect();
nsRect oldRowInkOverflow = rowFrame->InkOverflowRect();
// Reflow the cell with the constrained height. A cell with rowspan >1
// will get this reflow later during SplitSpanningCells.
@ -1167,7 +1167,7 @@ nsresult nsTableRowGroupFrame::SplitRowGroup(nsPresContext* aPresContext,
}
nsTableFrame::InvalidateTableFrame(rowFrame, oldRowRect,
oldRowVisualOverflow, false);
oldRowInkOverflow, false);
if (aStatus.IsIncomplete()) {
// The row frame is incomplete and all of the rowspan 1 cells' block
@ -1443,7 +1443,7 @@ void nsTableRowGroupFrame::Reflow(nsPresContext* aPresContext,
bool nsTableRowGroupFrame::ComputeCustomOverflow(
nsOverflowAreas& aOverflowAreas) {
// Row cursor invariants depend on the visual overflow area of the rows,
// Row cursor invariants depend on the ink overflow area of the rows,
// which may have changed, so we need to clear the cursor now.
ClearRowCursor();
return nsContainerFrame::ComputeCustomOverflow(aOverflowAreas);
@ -1926,7 +1926,7 @@ bool nsTableRowGroupFrame::FrameCursorData::AppendFrame(nsIFrame* aFrame) {
// We take the union of the overflow rect, and the frame's 'normal' position
// (excluding position:relative changes) and record the max difference between
// this combined overflow and the frame's rect.
nsRect positionedOverflowRect = aFrame->GetVisualOverflowRect();
nsRect positionedOverflowRect = aFrame->InkOverflowRect();
nsPoint positionedToNormal =
aFrame->GetNormalPosition() - aFrame->GetPosition();
nsRect normalOverflowRect = positionedOverflowRect + positionedToNormal;
@ -1947,8 +1947,8 @@ void nsTableRowGroupFrame::InvalidateFrame(uint32_t aDisplayItemKey,
bool aRebuildDisplayItems) {
nsIFrame::InvalidateFrame(aDisplayItemKey, aRebuildDisplayItems);
if (GetTableFrame()->IsBorderCollapse()) {
GetParent()->InvalidateFrameWithRect(
GetVisualOverflowRect() + GetPosition(), aDisplayItemKey, false);
GetParent()->InvalidateFrameWithRect(InkOverflowRect() + GetPosition(),
aDisplayItemKey, false);
}
}

Просмотреть файл

@ -337,7 +337,7 @@ class nsTableRowGroupFrame final : public nsContainerFrame,
const mozilla::LogicalPoint& aKidPosition,
const nsSize& aContainerSize, ReflowOutput& aDesiredSize,
const nsRect& aOriginalKidRect,
const nsRect& aOriginalKidVisualOverflow);
const nsRect& aOriginalKidInkOverflow);
void CalculateRowBSizes(nsPresContext* aPresContext,
ReflowOutput& aDesiredSize,

Просмотреть файл

@ -813,12 +813,11 @@ void nsTableWrapperFrame::Reflow(nsPresContext* aPresContext,
Maybe<ReflowInput> innerRI;
nsRect origCaptionRect;
nsRect origCaptionVisualOverflow;
nsRect origCaptionInkOverflow;
bool captionFirstReflow = false;
if (mCaptionFrames.NotEmpty()) {
origCaptionRect = mCaptionFrames.FirstChild()->GetRect();
origCaptionVisualOverflow =
mCaptionFrames.FirstChild()->GetVisualOverflowRect();
origCaptionInkOverflow = mCaptionFrames.FirstChild()->InkOverflowRect();
captionFirstReflow =
mCaptionFrames.FirstChild()->HasAnyStateBits(NS_FRAME_FIRST_REFLOW);
}
@ -977,9 +976,9 @@ void nsTableWrapperFrame::Reflow(nsPresContext* aPresContext,
innerRI.reset();
if (mCaptionFrames.NotEmpty()) {
nsTableFrame::InvalidateTableFrame(
mCaptionFrames.FirstChild(), origCaptionRect, origCaptionVisualOverflow,
captionFirstReflow);
nsTableFrame::InvalidateTableFrame(mCaptionFrames.FirstChild(),
origCaptionRect, origCaptionInkOverflow,
captionFirstReflow);
}
UpdateOverflowAreas(aDesiredSize);

Просмотреть файл

@ -283,10 +283,10 @@ nsresult nsIFrame::SyncXULLayout(nsBoxLayoutState& aBoxLayoutState) {
ReflowChildFlags flags = GetXULLayoutFlags() | aBoxLayoutState.LayoutFlags();
nsRect visualOverflow;
nsRect inkOverflow;
if (XULComputesOwnOverflowArea()) {
visualOverflow = GetVisualOverflowRect();
inkOverflow = InkOverflowRect();
} else {
nsRect rect(nsPoint(0, 0), GetSize());
nsOverflowAreas overflowAreas(rect, rect);
@ -300,7 +300,7 @@ nsresult nsIFrame::SyncXULLayout(nsBoxLayoutState& aBoxLayoutState) {
}
FinishAndStoreOverflow(overflowAreas, GetSize());
visualOverflow = overflowAreas.VisualOverflow();
inkOverflow = overflowAreas.InkOverflow();
}
nsView* view = GetView();
@ -308,7 +308,7 @@ nsresult nsIFrame::SyncXULLayout(nsBoxLayoutState& aBoxLayoutState) {
// Make sure the frame's view is properly sized and positioned and has
// things like opacity correct
nsContainerFrame::SyncFrameViewAfterReflow(presContext, this, view,
visualOverflow, flags);
inkOverflow, flags);
}
return NS_OK;

Просмотреть файл

@ -311,7 +311,7 @@ void nsSliderFrame::BuildDisplayListForChildren(
const CSSCoord thumbStart = NSAppUnitsToFloatPixels(
isHorizontal ? thumbRect.x : thumbRect.y, appUnitsPerCss);
const nsRect overflow = thumb->GetVisualOverflowRectRelativeToParent();
const nsRect overflow = thumb->InkOverflowRectRelativeToParent();
nsSize refSize = aBuilder->RootReferenceFrame()->GetSize();
nsRect dirty = aBuilder->GetVisibleRect().Intersect(thumbRect);
dirty = nsLayoutUtils::ComputePartialPrerenderArea(

Просмотреть файл

@ -328,7 +328,7 @@ bool nsDisplayXULTextBox::CreateWebRenderCommands(
nsRect nsDisplayXULTextBox::GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap) const {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return mFrame->InkOverflowRectRelativeToSelf() + ToReferenceFrame();
}
nsRect nsDisplayXULTextBox::GetComponentAlphaBounds(
@ -925,7 +925,7 @@ nsTextBoxFrame::DoXULLayout(nsBoxLayoutState& aBoxLayoutState) {
RefPtr<nsFontMetrics> fontMet =
nsLayoutUtils::GetFontMetricsForFrame(this, 1.0f);
nsBoundingMetrics metrics = fontMet->GetInkBoundsForVisualOverflow(
nsBoundingMetrics metrics = fontMet->GetInkBoundsForInkOverflow(
mCroppedTitle.get(), mCroppedTitle.Length(),
aBoxLayoutState.GetRenderingContext()->GetDrawTarget());
@ -941,7 +941,7 @@ nsTextBoxFrame::DoXULLayout(nsBoxLayoutState& aBoxLayoutState) {
textRect = tr.GetPhysicalRect(wm, GetSize());
// Our scrollable overflow is our bounds; our visual overflow may
// Our scrollable overflow is our bounds; our ink overflow may
// extend beyond that.
nsRect visualBounds;
visualBounds.UnionRect(scrollBounds, textRect);
@ -949,7 +949,7 @@ nsTextBoxFrame::DoXULLayout(nsBoxLayoutState& aBoxLayoutState) {
if (textStyle->HasTextShadow()) {
// text-shadow extends our visual but not scrollable bounds
nsRect& vis = overflow.VisualOverflow();
nsRect& vis = overflow.InkOverflow();
vis.UnionRect(vis,
nsLayoutUtils::GetTextShadowRectsUnion(mTextDrawRect, this));
}
@ -960,7 +960,7 @@ nsTextBoxFrame::DoXULLayout(nsBoxLayoutState& aBoxLayoutState) {
nsRect nsTextBoxFrame::GetComponentAlphaBounds() const {
if (StyleText()->HasTextShadow()) {
return GetVisualOverflowRectRelativeToSelf();
return InkOverflowRectRelativeToSelf();
}
return mTextDrawRect;
}

Просмотреть файл

@ -31,7 +31,7 @@ called with a smart pointer like nsRefPtr or nsCOMPtr.
(nsBlockFrame *) $4 = 0x000000011687fcb8
(lldb) ftl this
Block(div)(-1)@0x11687fcb8 {0,0,7380,690} [state=0002100000d04601] [content=0x11688c0c0] [sc=0x11687f990:-moz-scrolled-content]<
line 0x116899130: count=1 state=inline,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x100] {60,0,0,690} vis-overflow=60,510,0,0 scr-overflow=60,510,0,0 <
line 0x116899130: count=1 state=inline,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x100] {60,0,0,690} ink-overflow=60,510,0,0 scr-overflow=60,510,0,0 <
Text(0)""@0x1168990c0 {60,510,0,0} [state=0001000020404000] [content=0x11687ca10] [sc=0x11687fd88:-moz-non-element,parent=0x11687eb00] [run=0x115115e80][0,0,T]
>
>
@ -39,15 +39,15 @@ called with a smart pointer like nsRefPtr or nsCOMPtr.
Viewport(-1)@0x116017430 [view=0x115efe190] {0,0,60,60} [state=000b063000002623] [sc=0x1160170f8:-moz-viewport]<
HTMLScroll(html)(-1)@0x1160180d0 {0,0,0,0} [state=000b020000000403] [content=0x115e4d640] [sc=0x116017768:-moz-viewport-scroll]<
...
Canvas(html)(-1)@0x116017e08 {0,0,60,60} vis-overflow=0,0,8340,2196 scr-overflow=0,0,8220,2196 [state=000b002000000601] [content=0x115e4d640] [sc=0x11687e0f8:-moz-scrolled-canvas]<
Block(html)(-1)@0x11687e578 {0,0,60,2196} vis-overflow=0,0,8340,2196 scr-overflow=0,0,8220,2196 [state=000b100000d00601] [content=0x115e4d640] [sc=0x11687e4b8,parent=0x0]<
line 0x11687ec48: count=1 state=block,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x48] bm=480 {480,480,0,1236} vis-overflow=360,426,7980,1410 scr-overflow=480,480,7740,1236 <
Block(body)(1)@0x11687ebb0 {480,480,0,1236} vis-overflow=-120,-54,7980,1410 scr-overflow=0,0,7740,1236 [state=000b120000100601] [content=0x115ed8980] [sc=0x11687e990]<
line 0x116899170: count=1 state=inline,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x0] {0,0,7740,1236} vis-overflow=-120,-54,7980,1410 scr-overflow=0,0,7740,1236 <
nsTextControlFrame@0x11687f068 {0,66,7740,1170} vis-overflow=-120,-120,7980,1410 scr-overflow=0,0,7740,1170 [state=0002000000004621] [content=0x115ca2c50] [sc=0x11687ea40]<
Canvas(html)(-1)@0x116017e08 {0,0,60,60} ink-overflow=0,0,8340,2196 scr-overflow=0,0,8220,2196 [state=000b002000000601] [content=0x115e4d640] [sc=0x11687e0f8:-moz-scrolled-canvas]<
Block(html)(-1)@0x11687e578 {0,0,60,2196} ink-overflow=0,0,8340,2196 scr-overflow=0,0,8220,2196 [state=000b100000d00601] [content=0x115e4d640] [sc=0x11687e4b8,parent=0x0]<
line 0x11687ec48: count=1 state=block,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x48] bm=480 {480,480,0,1236} ink-overflow=360,426,7980,1410 scr-overflow=480,480,7740,1236 <
Block(body)(1)@0x11687ebb0 {480,480,0,1236} ink-overflow=-120,-54,7980,1410 scr-overflow=0,0,7740,1236 [state=000b120000100601] [content=0x115ed8980] [sc=0x11687e990]<
line 0x116899170: count=1 state=inline,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x0] {0,0,7740,1236} ink-overflow=-120,-54,7980,1410 scr-overflow=0,0,7740,1236 <
nsTextControlFrame@0x11687f068 {0,66,7740,1170} ink-overflow=-120,-120,7980,1410 scr-overflow=0,0,7740,1170 [state=0002000000004621] [content=0x115ca2c50] [sc=0x11687ea40]<
HTMLScroll(div)(-1)@0x11687f6b0 {180,240,7380,690} [state=0002000000084409] [content=0x11688c0c0] [sc=0x11687eb00]<
Block(div)(-1)@0x11687fcb8 {0,0,7380,690} [state=0002100000d04601] [content=0x11688c0c0] [sc=0x11687f990:-moz-scrolled-content]<
line 0x116899130: count=1 state=inline,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x100] {60,0,0,690} vis-overflow=60,510,0,0 scr-overflow=60,510,0,0 <
line 0x116899130: count=1 state=inline,clean,prevmarginclean,not impacted,not wrapped,before:nobr,after:nobr[0x100] {60,0,0,690} ink-overflow=60,510,0,0 scr-overflow=60,510,0,0 <
Text(0)""@0x1168990c0 {60,510,0,0} [state=0001000020404000] [content=0x11687ca10] [sc=0x11687fd88:-moz-non-element,parent=0x11687eb00] [run=0x115115e80][0,0,T]
...