зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
023457eb88
Коммит
fdc00547f6
|
@ -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, ®ion);
|
||||
|
|
|
@ -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]
|
||||
...
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче