--- a/layout/generic/nsGfxScrollFrame.cpp
+++ b/layout/generic/nsGfxScrollFrame.cpp
@@ -2526,18 +2526,19 @@ void ScrollFrameHelper::MarkNotRecentlyS
mHasBeenScrolledRecently = false;
mOuter->SchedulePaint();
}
void ScrollFrameHelper::MarkRecentlyScrolled()
{
mHasBeenScrolledRecently = true;
- if (IsAlwaysActive())
+ if (IsAlwaysActive()) {
return;
+ }
if (mActivityExpirationState.IsTracked()) {
gScrollFrameActivityTracker->MarkUsed(this);
} else {
if (!gScrollFrameActivityTracker) {
gScrollFrameActivityTracker = new ScrollFrameActivityTracker();
}
gScrollFrameActivityTracker->AddObject(this);
@@ -2703,22 +2704,23 @@ ScrollFrameHelper::ScrollActivityCallbac
}
void
ScrollFrameHelper::ScheduleSyntheticMouseMove()
{
if (!mScrollActivityTimer) {
mScrollActivityTimer = do_CreateInstance("@mozilla.org/timer;1");
- if (!mScrollActivityTimer)
+ if (!mScrollActivityTimer) {
return;
+ }
}
mScrollActivityTimer->InitWithFuncCallback(
- ScrollActivityCallback, this, 100, nsITimer::TYPE_ONE_SHOT);
+ ScrollActivityCallback, this, 100, nsITimer::TYPE_ONE_SHOT);
}
void
ScrollFrameHelper::NotifyApproximateFrameVisibilityUpdate(bool aIgnoreDisplayPort)
{
mLastUpdateFramesPos = GetScrollPosition();
if (aIgnoreDisplayPort) {
mHadDisplayPortAtLastFrameUpdate = false;
@@ -2751,17 +2753,17 @@ ScrollFrameHelper::ScrollToImpl(nsPoint
nsPresContext* presContext = mOuter->PresContext();
nscoord appUnitsPerDevPixel = presContext->AppUnitsPerDevPixel();
// 'scale' is our estimate of the scale factor that will be applied
// when rendering the scrolled content to its own PaintedLayer.
gfxSize scale = FrameLayerBuilder::GetPaintedLayerScaleForFrame(mScrolledFrame);
nsPoint curPos = GetScrollPosition();
nsPoint alignWithPos = mScrollPosForLayerPixelAlignment == nsPoint(-1,-1)
- ? curPos : mScrollPosForLayerPixelAlignment;
+ ? curPos : mScrollPosForLayerPixelAlignment;
// Try to align aPt with curPos so they have an integer number of layer
// pixels between them. This gives us the best chance of scrolling without
// having to invalidate due to changes in subpixel rendering.
// Note that when we actually draw into a PaintedLayer, the coordinates
// that get mapped onto the layer buffer pixels are from the display list,
// which are relative to the display root frame's top-left increasing down,
// whereas here our coordinates are scroll positions which increase upward
// and are relative to the scrollport top-left. This difference doesn't actually
@@ -3050,18 +3052,19 @@ ScrollFrameHelper::AppendScrollPartsTo(n
}
bool overlayScrollbars =
LookAndFeel::GetInt(LookAndFeel::eIntID_UseOverlayScrollbars) != 0;
AutoTArray<nsIFrame*, 3> scrollParts;
for (nsIFrame* kid : mOuter->PrincipalChildList()) {
if (kid == mScrolledFrame ||
- (kid->IsAbsPosContainingBlock() || overlayScrollbars) != aPositioned)
+ (kid->IsAbsPosContainingBlock() || overlayScrollbars) != aPositioned) {
continue;
+ }
scrollParts.AppendElement(kid);
}
if (scrollParts.IsEmpty()) {
return;
}
// We can't check will-change budget during display list building phase.
@@ -3104,17 +3107,17 @@ ScrollFrameHelper::AppendScrollPartsTo(n
nsDisplayListBuilder::AutoBuildingDisplayList
buildingForChild(aBuilder, scrollParts[i],
dirty + mOuter->GetOffsetTo(scrollParts[i]), true);
// Always create layers for overlay scrollbars so that we don't create a
// giant layer covering the whole scrollport if both scrollbars are visible.
bool isOverlayScrollbar = (flags != 0) && overlayScrollbars;
bool createLayer = aCreateLayer || isOverlayScrollbar ||
- gfxPrefs::AlwaysLayerizeScrollbarTrackTestOnly();
+ gfxPrefs::AlwaysLayerizeScrollbarTrackTestOnly();
nsDisplayListBuilder::AutoCurrentScrollbarInfoSetter
infoSetter(aBuilder, scrollTargetId, flags, createLayer);
nsDisplayListCollection partList;
mOuter->BuildDisplayListForChild(
aBuilder, scrollParts[i], dirty, partList,
nsIFrame::DISPLAY_CHILD_FORCE_STACKING_CONTEXT);
@@ -4037,18 +4040,17 @@ ScrollFrameHelper::ScrollBy(nsIntPoint a
nsPoint clampAmount = newPos - mDestination;
float appUnitsPerDevPixel = mOuter->PresContext()->AppUnitsPerDevPixel();
*aOverflow = nsIntPoint(
NSAppUnitsToIntPixels(clampAmount.x, appUnitsPerDevPixel),
NSAppUnitsToIntPixels(clampAmount.y, appUnitsPerDevPixel));
}
if (aUnit == nsIScrollableFrame::DEVICE_PIXELS &&
- !nsLayoutUtils::AsyncPanZoomEnabled(mOuter))
- {
+ !nsLayoutUtils::AsyncPanZoomEnabled(mOuter)) {
// When APZ is disabled, we must track the velocity
// on the main thread; otherwise, the APZC will manage this.
mVelocityQueue.Sample(GetScrollPosition());
}
}
void
ScrollFrameHelper::ScrollSnap(nsIScrollableFrame::ScrollMode aMode)
@@ -4299,28 +4301,26 @@ ScrollFrameHelper::FireScrollPortEvent()
// DOM event.
bool both = vertChanged && horizChanged &&
newVerticalOverflow == newHorizontalOverflow;
InternalScrollPortEvent::OrientType orient;
if (both) {
orient = InternalScrollPortEvent::eBoth;
mHorizontalOverflow = newHorizontalOverflow;
mVerticalOverflow = newVerticalOverflow;
- }
- else if (vertChanged) {
+ } else if (vertChanged) {
orient = InternalScrollPortEvent::eVertical;
mVerticalOverflow = newVerticalOverflow;
if (horizChanged) {
// We need to dispatch a separate horizontal DOM event. Do that the next
// time around since dispatching the vertical DOM event might destroy
// the frame.
PostOverflowEvent();
}
- }
- else {
+ } else {
orient = InternalScrollPortEvent::eHorizontal;
mHorizontalOverflow = newHorizontalOverflow;
}
InternalScrollPortEvent event(true,
(orient == InternalScrollPortEvent::eHorizontal ? mHorizontalOverflow :
mVerticalOverflow) ?
eScrollPortOverflow : eScrollPortUnderflow, nullptr);
@@ -4748,18 +4748,19 @@ ScrollFrameHelper::FireScrollEvent()
EventDispatcher::Dispatch(content, prescontext, &event, nullptr, &status);
}
ActiveLayerTracker::SetCurrentScrollHandlerFrame(nullptr);
}
void
ScrollFrameHelper::PostScrollEvent()
{
- if (mScrollEvent)
+ if (mScrollEvent) {
return;
+ }
// The ScrollEvent constructor registers itself with the refresh driver.
mScrollEvent = new ScrollEvent(this);
}
NS_IMETHODIMP
ScrollFrameHelper::AsyncScrollPortEvent::Run()
{
@@ -4768,27 +4769,29 @@ ScrollFrameHelper::AsyncScrollPortEvent:
FlushPendingNotifications(FlushType::InterruptibleLayout);
}
return mHelper ? mHelper->FireScrollPortEvent() : NS_OK;
}
bool
nsXULScrollFrame::AddHorizontalScrollbar(nsBoxLayoutState& aState, bool aOnBottom)
{
- if (!mHelper.mHScrollbarBox)
+ if (!mHelper.mHScrollbarBox) {
return true;
+ }
return AddRemoveScrollbar(aState, aOnBottom, true, true);
}
bool
nsXULScrollFrame::AddVerticalScrollbar(nsBoxLayoutState& aState, bool aOnRight)
{
- if (!mHelper.mVScrollbarBox)
+ if (!mHelper.mVScrollbarBox) {
return true;
+ }
return AddRemoveScrollbar(aState, aOnRight, false, true);
}
void
nsXULScrollFrame::RemoveHorizontalScrollbar(nsBoxLayoutState& aState, bool aOnBottom)
{
// removing a scrollbar should always fit
@@ -4921,36 +4924,38 @@ nsXULScrollFrame::LayoutScrollArea(nsBox
}
aState.SetLayoutFlags(oldflags);
}
void ScrollFrameHelper::PostOverflowEvent()
{
- if (mAsyncScrollPortEvent.IsPending())
+ if (mAsyncScrollPortEvent.IsPending()) {
return;
+ }
// Keep this in sync with FireScrollPortEvent().
nsSize scrollportSize = mScrollPort.Size();
nsSize childSize = GetScrolledRect().Size();
bool newVerticalOverflow = childSize.height > scrollportSize.height;
bool vertChanged = mVerticalOverflow != newVerticalOverflow;
bool newHorizontalOverflow = childSize.width > scrollportSize.width;
bool horizChanged = mHorizontalOverflow != newHorizontalOverflow;
if (!vertChanged && !horizChanged) {
return;
}
nsRootPresContext* rpc = mOuter->PresContext()->GetRootPresContext();
- if (!rpc)
+ if (!rpc) {
return;
+ }
mAsyncScrollPortEvent = new AsyncScrollPortEvent(this);
rpc->AddWillPaintObserver(mAsyncScrollPortEvent.get());
}
nsIFrame*
ScrollFrameHelper::GetFrameForDir() const
{
@@ -4961,24 +4966,26 @@ ScrollFrameHelper::GetFrameForDir() cons
nsPresContext *presContext = mOuter->PresContext();
nsIDocument *document = presContext->Document();
Element *root = document->GetRootElement();
// But for HTML and XHTML we want the body element.
nsCOMPtr<nsIHTMLDocument> htmlDoc = do_QueryInterface(document);
if (htmlDoc) {
Element *bodyElement = document->GetBodyElement();
- if (bodyElement)
+ if (bodyElement) {
root = bodyElement; // we can trust the document to hold on to it
+ }
}
if (root) {
nsIFrame *rootsFrame = root->GetPrimaryFrame();
- if (rootsFrame)
+ if (rootsFrame) {
frame = rootsFrame;
+ }
}
}
return frame;
}
bool
ScrollFrameHelper::IsScrollbarOnRight() const
@@ -5009,32 +5016,32 @@ bool
ScrollFrameHelper::IsMaybeScrollingActive() const
{
const nsStyleDisplay* disp = mOuter->StyleDisplay();
if (disp && (disp->mWillChangeBitField & NS_STYLE_WILL_CHANGE_SCROLL)) {
return true;
}
return mHasBeenScrolledRecently ||
- IsAlwaysActive() ||
- mWillBuildScrollableLayer;
+ IsAlwaysActive() ||
+ mWillBuildScrollableLayer;
}
bool
ScrollFrameHelper::IsScrollingActive(nsDisplayListBuilder* aBuilder) const
{
const nsStyleDisplay* disp = mOuter->StyleDisplay();
if (disp && (disp->mWillChangeBitField & NS_STYLE_WILL_CHANGE_SCROLL) &&
aBuilder->IsInWillChangeBudget(mOuter, GetScrollPositionClampingScrollPortSize())) {
return true;
}
return mHasBeenScrolledRecently ||
- IsAlwaysActive() ||
- mWillBuildScrollableLayer;
+ IsAlwaysActive() ||
+ mWillBuildScrollableLayer;
}
/**
* Reflow the scroll area if it needs it and return its size. Also determine if the reflow will
* cause any of the scrollbars to need to be reflowed.
*/
nsresult
nsXULScrollFrame::XULLayout(nsBoxLayoutState& aState)
@@ -5439,31 +5446,33 @@ ScrollFrameHelper::UpdatePrevScrolledRec
mPrevScrolledRect = GetScrolledRect();
}
void
ScrollFrameHelper::AdjustScrollbarRectForResizer(
nsIFrame* aFrame, nsPresContext* aPresContext,
nsRect& aRect, bool aHasResizer, bool aVertical)
{
- if ((aVertical ? aRect.width : aRect.height) == 0)
+ if ((aVertical ? aRect.width : aRect.height) == 0) {
return;
+ }
// if a content resizer is present, use its size. Otherwise, check if the
// widget has a resizer.
nsRect resizerRect;
if (aHasResizer) {
resizerRect = mResizerBox->GetRect();
}
else {
nsPoint offset;
nsIWidget* widget = aFrame->GetNearestWidget(offset);
LayoutDeviceIntRect widgetRect;
- if (!widget || !widget->ShowsResizeIndicator(&widgetRect))
+ if (!widget || !widget->ShowsResizeIndicator(&widgetRect)) {
return;
+ }
resizerRect = nsRect(aPresContext->DevPixelsToAppUnits(widgetRect.x) - offset.x,
aPresContext->DevPixelsToAppUnits(widgetRect.y) - offset.y,
aPresContext->DevPixelsToAppUnits(widgetRect.width),
aPresContext->DevPixelsToAppUnits(widgetRect.height));
}
if (resizerRect.Contains(aRect.BottomRight() - nsPoint(1, 1))) {
@@ -5570,18 +5579,17 @@ ScrollFrameHelper::LayoutScrollbars(nsBo
nscoord hScrollbarHeight = mHScrollbarBox ?
mHScrollbarBox->GetXULPrefSize(aState).height : defaultSize;
r.height = std::max(std::max(r.height, hScrollbarHeight), resizerMinSize.height);
if (aContentArea.y == mScrollPort.y) {
r.y = aContentArea.YMost() - r.height;
}
nsBoxFrame::LayoutChildAt(aState, mResizerBox, r);
- }
- else if (mResizerBox) {
+ } else if (mResizerBox) {
// otherwise lay out the resizer with an empty rectangle
nsBoxFrame::LayoutChildAt(aState, mResizerBox, nsRect());
}
}
nsPresContext* presContext = mScrolledFrame->PresContext();
nsRect vRect;
if (mVScrollbarBox) {
@@ -5676,18 +5684,19 @@ ScrollFrameHelper::SetCoordAttribute(nsI
// convert to pixels
int32_t pixelSize = nsPresContext::AppUnitsToIntCSSPixels(aSize);
// only set the attribute if it changed.
nsAutoString newValue;
newValue.AppendInt(pixelSize);
- if (aContent->AttrValueIs(kNameSpaceID_None, aAtom, newValue, eCaseMatters))
+ if (aContent->AttrValueIs(kNameSpaceID_None, aAtom, newValue, eCaseMatters)) {
return;
+ }
AutoWeakFrame weakFrame(mOuter);
nsCOMPtr<nsIContent> kungFuDeathGrip = aContent;
aContent->SetAttr(kNameSpaceID_None, aAtom, newValue, true);
MOZ_ASSERT(ShellIsAlive(weakShell), "pres shell was destroyed by scrolling");
if (!weakFrame.IsAlive()) {
return;
}
@@ -5852,17 +5861,17 @@ ScrollFrameHelper::GetScrolledFrameDir()
{
// If the scrolled frame has unicode-bidi: plaintext, the paragraph
// direction set by the text content overrides the direction of the frame
if (mScrolledFrame->StyleTextReset()->mUnicodeBidi &
NS_STYLE_UNICODE_BIDI_PLAINTEXT) {
nsIFrame* childFrame = mScrolledFrame->PrincipalChildList().FirstChild();
if (childFrame) {
return (nsBidiPresUtils::ParagraphDirection(childFrame) == NSBIDI_LTR)
- ? NS_STYLE_DIRECTION_LTR : NS_STYLE_DIRECTION_RTL;
+ ? NS_STYLE_DIRECTION_LTR : NS_STYLE_DIRECTION_RTL;
}
}
return IsBidiLTR() ? NS_STYLE_DIRECTION_LTR : NS_STYLE_DIRECTION_RTL;
}
nsRect
ScrollFrameHelper::GetUnsnappedScrolledRectInternal(const nsRect& aScrolledFrameOverflowArea,
@@ -5904,18 +5913,17 @@ ScrollFrameHelper::GetCoordAttribute(nsI
nscoord* aRangeStart,
nscoord* aRangeLength)
{
if (aBox) {
nsIContent* content = aBox->GetContent();
nsAutoString value;
content->GetAttr(kNameSpaceID_None, aAtom, value);
- if (!value.IsEmpty())
- {
+ if (!value.IsEmpty()) {
nsresult error;
// convert it to appunits
nscoord result = nsPresContext::CSSPixelsToAppUnits(value.ToInteger(&error));
nscoord halfPixel = nsPresContext::CSSPixelsToAppUnits(0.5f);
// Any nscoord value that would round to the attribute value when converted
// to CSS pixels is allowed.
*aRangeStart = result - halfPixel;
*aRangeLength = halfPixel*2 - 1;