Chromium Code Reviews| Index: Source/core/rendering/RenderLayer.cpp |
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp |
| index 76a2ed8b645f0f8dff138c1686542a6885c1a959..5aed188596cdeed44404dfc9451fec362dd02c3c 100644 |
| --- a/Source/core/rendering/RenderLayer.cpp |
| +++ b/Source/core/rendering/RenderLayer.cpp |
| @@ -2202,10 +2202,10 @@ void RenderLayer::scrollToOffset(const IntSize& scrollOffset, ScrollOffsetClampi |
| { |
| IntSize newScrollOffset = clamp == ScrollOffsetClamped ? clampScrollOffset(scrollOffset) : scrollOffset; |
| if (newScrollOffset != adjustedScrollOffset()) |
| - scrollToOffsetWithoutAnimation(IntPoint(newScrollOffset)); |
| + scrollToOffsetWithoutAnimation(-scrollOrigin() + newScrollOffset); |
| } |
| -void RenderLayer::scrollTo(int x, int y) |
| +void RenderLayer::setScrollOffset(const IntPoint& newScrollOffset) |
|
Julien - ping for review
2013/05/10 01:03:34
It's a shame that we are not consistent in the cod
|
| { |
| RenderBox* box = renderBox(); |
| if (!box) |
| @@ -2217,15 +2217,9 @@ void RenderLayer::scrollTo(int x, int y) |
| computeScrollDimensions(); |
| } |
| - // FIXME: Eventually, we will want to perform a blit. For now never |
| - // blit, since the check for blitting is going to be very |
| - // complicated (since it will involve testing whether our layer |
| - // is either occluded by another layer or clipped by an enclosing |
| - // layer or contains fixed backgrounds, etc.). |
| - IntSize newScrollOffset = IntSize(x - scrollOrigin().x(), y - scrollOrigin().y()); |
| - if (m_scrollOffset == newScrollOffset) |
| + if (m_scrollOffset == toIntSize(newScrollOffset)) |
| return; |
| - m_scrollOffset = newScrollOffset; |
| + m_scrollOffset = toIntSize(newScrollOffset); |
| Frame* frame = renderer()->frame(); |
| InspectorInstrumentation::willScrollLayer(frame); |
| @@ -2581,11 +2575,6 @@ int RenderLayer::scrollSize(ScrollbarOrientation orientation) const |
| return scrollbar ? (scrollbar->totalSize() - scrollbar->visibleSize()) : 0; |
| } |
| -void RenderLayer::setScrollOffset(const IntPoint& offset) |
| -{ |
| - scrollTo(offset.x(), offset.y()); |
| -} |
| - |
| int RenderLayer::scrollPosition(Scrollbar* scrollbar) const |
| { |
| if (scrollbar->orientation() == HorizontalScrollbar) |
| @@ -2607,8 +2596,13 @@ IntPoint RenderLayer::minimumScrollPosition() const |
| IntPoint RenderLayer::maximumScrollPosition() const |
| { |
| - // FIXME: m_scrollSize may not be up-to-date if m_scrollDimensionsDirty is true. |
| - return -scrollOrigin() + roundedIntSize(m_scrollSize) - visibleContentRect(IncludeScrollbars).size(); |
| + RenderBox* box = renderBox(); |
| + if (!box) |
|
Julien - ping for review
2013/05/10 01:03:34
Only boxes can have scrollbars. Can't we just ASSE
|
| + return -scrollOrigin(); |
| + |
| + LayoutRect overflowRect(box->layoutOverflowRect()); |
| + box->flipForWritingMode(overflowRect); |
| + return -scrollOrigin() + enclosingIntRect(overflowRect).size() - enclosingIntRect(box->clientBoxRect()).size(); |
| } |
| IntRect RenderLayer::visibleContentRect(VisibleContentRectIncludesScrollbars scrollbarInclusion) const |
| @@ -3250,7 +3244,7 @@ void RenderLayer::updateScrollInfoAfterLayout() |
| updateScrollbarsAfterLayout(); |
| if (originalScrollOffset != adjustedScrollOffset()) |
| - scrollToOffsetWithoutAnimation(IntPoint(adjustedScrollOffset())); |
| + scrollToOffsetWithoutAnimation(-scrollOrigin() + adjustedScrollOffset()); |
| // Composited scrolling may need to be enabled or disabled if the amount of overflow changed. |
| if (renderer()->view() && compositor()->updateLayerCompositingState(this)) |