Bug 1471174 - Constify nsIFrame::IsScrolledOutOfView. r?birtles
The reason why const_cast is used for nsLayoutUtils::GetNearestScrollableFrame
is that if we changed the function as well, it ends up scattering const_cast
in most call sites of the function. That's because GetNearestScrollableFrame
has a do_QueryFrame call for the given nsIFrame* and returns the queried frame,
so it will be like this;
const nsIScrollableFrame* GetNearestScrollableFrame(const nsIFrame*, ..)
Most call sites of this function are then calls do_QueryFrame for the returned
nsIScrollableFrame*.
MozReview-Commit-ID: EwccKUITL89
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -10954,22 +10954,22 @@ nsIFrame::IsStackingContext()
const nsStyleDisplay* disp = StyleDisplay();
const bool isPositioned = disp->IsAbsPosContainingBlock(this);
return IsStackingContext(EffectSet::GetEffectSet(this), disp,
StylePosition(), StyleEffects(),
isPositioned);
}
static bool
-IsFrameScrolledOutOfView(nsIFrame* aTarget,
+IsFrameScrolledOutOfView(const nsIFrame* aTarget,
const nsRect& aTargetRect,
- nsIFrame* aParent)
+ const nsIFrame* aParent)
{
nsIScrollableFrame* scrollableFrame =
- nsLayoutUtils::GetNearestScrollableFrame(aParent,
+ nsLayoutUtils::GetNearestScrollableFrame(const_cast<nsIFrame*>(aParent),
nsLayoutUtils::SCROLLABLE_SAME_DOC |
nsLayoutUtils::SCROLLABLE_FIXEDPOS_FINDS_ROOT |
nsLayoutUtils::SCROLLABLE_INCLUDE_HIDDEN);
if (!scrollableFrame) {
return false;
}
nsIFrame *scrollableParent = do_QueryFrame(scrollableFrame);
@@ -11003,17 +11003,17 @@ IsFrameScrolledOutOfView(nsIFrame* aTarg
if (!parent) {
return false;
}
return IsFrameScrolledOutOfView(aTarget, aTargetRect, parent);
}
bool
-nsIFrame::IsScrolledOutOfView()
+nsIFrame::IsScrolledOutOfView() const
{
nsRect rect = GetVisualOverflowRectRelativeToSelf();
return IsFrameScrolledOutOfView(this, rect, this);
}
gfx::Matrix
nsIFrame::ComputeWidgetTransform()
{
--- a/layout/generic/nsIFrame.h
+++ b/layout/generic/nsIFrame.h
@@ -4011,17 +4011,17 @@ public:
}
bool BackfaceIsHidden() const {
return StyleDisplay()->BackfaceIsHidden();
}
/**
* Returns true if the frame is scrolled out of view.
*/
- bool IsScrolledOutOfView();
+ bool IsScrolledOutOfView() const;
/**
* Computes a 2D matrix from the -moz-window-transform and
* -moz-window-transform-origin properties on aFrame.
* Values that don't result in a 2D matrix will be ignored and an identity
* matrix will be returned instead.
*/
Matrix ComputeWidgetTransform();