| Index: Source/web/RotationViewportAnchor.cpp
|
| diff --git a/Source/web/RotationViewportAnchor.cpp b/Source/web/RotationViewportAnchor.cpp
|
| index 46b87dacadeda63d6fde011413daa7aef20f12d4..bc32d1d5e5933487b0406d828e3fed17d11714dc 100644
|
| --- a/Source/web/RotationViewportAnchor.cpp
|
| +++ b/Source/web/RotationViewportAnchor.cpp
|
| @@ -86,20 +86,28 @@ RotationViewportAnchor::RotationViewportAnchor(
|
| PageScaleConstraintsSet& pageScaleConstraintsSet)
|
| : ViewportAnchor(rootFrameView, pinchViewport)
|
| , m_anchorInInnerViewCoords(anchorInInnerViewCoords)
|
| - , m_pageScaleConstraintsSet(pageScaleConstraintsSet) { }
|
| + , m_pageScaleConstraintsSet(pageScaleConstraintsSet)
|
| +{
|
| + setAnchor();
|
| +}
|
| +
|
| +RotationViewportAnchor::~RotationViewportAnchor()
|
| +{
|
| + restoreToAnchor();
|
| +}
|
|
|
| void RotationViewportAnchor::setAnchor()
|
| {
|
| // FIXME: Scroll offsets are now fractional (DoublePoint and FloatPoint for the FrameView and PinchViewport
|
| // respectively. This path should be rewritten without pixel snapping.
|
| - IntRect outerViewRect = m_rootFrameView.visibleContentRect();
|
| - IntRect innerViewRect = enclosedIntRect(m_pinchViewport.visibleRectInDocument());
|
| + IntRect outerViewRect = m_rootFrameView->visibleContentRect();
|
| + IntRect innerViewRect = enclosedIntRect(m_pinchViewport->visibleRectInDocument());
|
|
|
| - m_oldPageScaleFactor = m_pinchViewport.scale();
|
| + m_oldPageScaleFactor = m_pinchViewport->scale();
|
| m_oldMinimumPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().minimumScale;
|
|
|
| // Save the absolute location in case we won't find the anchor node, we'll fall back to that.
|
| - m_pinchViewportInDocument = m_pinchViewport.visibleRectInDocument().location();
|
| + m_pinchViewportInDocument = m_pinchViewport->visibleRectInDocument().location();
|
|
|
| m_anchorNode.clear();
|
| m_anchorNodeBounds = LayoutRect();
|
| @@ -128,7 +136,7 @@ void RotationViewportAnchor::setAnchor()
|
| anchorOffset.scale(m_anchorInInnerViewCoords.width(), m_anchorInInnerViewCoords.height());
|
| const FloatPoint anchorPoint = FloatPoint(innerViewRect.location()) + anchorOffset;
|
|
|
| - Node* node = findNonEmptyAnchorNode(flooredIntPoint(anchorPoint), innerViewRect, m_rootFrameView.frame().eventHandler());
|
| + Node* node = findNonEmptyAnchorNode(flooredIntPoint(anchorPoint), innerViewRect, m_rootFrameView->frame().eventHandler());
|
| if (!node)
|
| return;
|
|
|
| @@ -143,7 +151,7 @@ void RotationViewportAnchor::restoreToAnchor()
|
| float newPageScaleFactor = m_oldPageScaleFactor / m_oldMinimumPageScaleFactor * m_pageScaleConstraintsSet.finalConstraints().minimumScale;
|
| newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().clampToConstraints(newPageScaleFactor);
|
|
|
| - FloatSize pinchViewportSize = m_pinchViewport.size();
|
| + FloatSize pinchViewportSize = m_pinchViewport->size();
|
| pinchViewportSize.scale(1 / newPageScaleFactor);
|
|
|
| IntPoint mainFrameOrigin;
|
| @@ -151,17 +159,16 @@ void RotationViewportAnchor::restoreToAnchor()
|
|
|
| computeOrigins(pinchViewportSize, mainFrameOrigin, pinchViewportOrigin);
|
|
|
| - m_rootFrameView.setScrollOffset(mainFrameOrigin);
|
| + m_rootFrameView->setScrollOffset(mainFrameOrigin);
|
|
|
| // Set scale before location, since location can be clamped on setting scale.
|
| - m_pinchViewport.setScale(newPageScaleFactor);
|
| - m_pinchViewport.setLocation(pinchViewportOrigin);
|
| + m_pinchViewport->setScale(newPageScaleFactor);
|
| + m_pinchViewport->setLocation(pinchViewportOrigin);
|
| }
|
|
|
| -void RotationViewportAnchor::computeOrigins(const FloatSize& innerSize,
|
| - IntPoint& mainFrameOffset, FloatPoint& pinchViewportOffset) const
|
| +void RotationViewportAnchor::computeOrigins(const FloatSize& innerSize, IntPoint& mainFrameOffset, FloatPoint& pinchViewportOffset) const
|
| {
|
| - IntSize outerSize = m_rootFrameView.visibleContentRect().size();
|
| + IntSize outerSize = m_rootFrameView->visibleContentRect().size();
|
|
|
| // Compute the viewport origins in CSS pixels relative to the document.
|
| FloatSize absPinchViewportOffset = m_normalizedPinchViewportOffset;
|
| @@ -175,7 +182,7 @@ void RotationViewportAnchor::computeOrigins(const FloatSize& innerSize,
|
|
|
| moveToEncloseRect(outerRect, innerRect);
|
|
|
| - outerRect.setLocation(m_rootFrameView.adjustScrollPositionWithinRange(outerRect.location()));
|
| + outerRect.setLocation(m_rootFrameView->adjustScrollPositionWithinRange(outerRect.location()));
|
|
|
| moveIntoRect(innerRect, outerRect);
|
|
|
|
|