| Index: Source/core/rendering/RenderLayerBacking.cpp
|
| diff --git a/Source/core/rendering/RenderLayerBacking.cpp b/Source/core/rendering/RenderLayerBacking.cpp
|
| index 4c50398f53abeef4b9f5f69fd60b1ea51aeffcd1..84f1277a358edaa5a1f6eb86f843d6d3f89565bb 100644
|
| --- a/Source/core/rendering/RenderLayerBacking.cpp
|
| +++ b/Source/core/rendering/RenderLayerBacking.cpp
|
| @@ -676,24 +676,26 @@ void RenderLayerBacking::updateGraphicsLayerGeometry()
|
| if (m_scrollingLayer) {
|
| ASSERT(m_scrollingContentsLayer);
|
| RenderBox* renderBox = toRenderBox(renderer());
|
| - IntRect paddingBox(renderBox->borderLeft(), renderBox->borderTop(), renderBox->width() - renderBox->borderLeft() - renderBox->borderRight(), renderBox->height() - renderBox->borderTop() - renderBox->borderBottom());
|
| - IntSize scrollOffset = m_owningLayer->adjustedScrollOffset();
|
| + IntRect clientBox = enclosingIntRect(renderBox->clientBoxRect());
|
| + // FIXME: We should make RenderBox::clientBoxRect consider scrollbar placement.
|
| + if (style->shouldPlaceBlockDirectionScrollbarOnLogicalLeft())
|
| + clientBox.move(renderBox->verticalScrollbarWidth(), 0);
|
|
|
| - m_scrollingLayer->setPosition(FloatPoint(paddingBox.location() - localCompositingBounds.location()));
|
| -
|
| - m_scrollingLayer->setSize(paddingBox.size());
|
| - m_scrollingContentsLayer->setPosition(FloatPoint(-scrollOffset.width(), -scrollOffset.height()));
|
| + IntSize adjustedScrollOffset = m_owningLayer->adjustedScrollOffset();
|
| + m_scrollingLayer->setPosition(FloatPoint(clientBox.location() - localCompositingBounds.location()));
|
| + m_scrollingLayer->setSize(clientBox.size());
|
| + m_scrollingContentsLayer->setPosition(FloatPoint(-adjustedScrollOffset.width(), -adjustedScrollOffset.height()));
|
|
|
| IntSize oldScrollingLayerOffset = m_scrollingLayer->offsetFromRenderer();
|
| - m_scrollingLayer->setOffsetFromRenderer(-toIntSize(paddingBox.location()));
|
| + m_scrollingLayer->setOffsetFromRenderer(-toIntSize(clientBox.location()));
|
|
|
| - bool paddingBoxOffsetChanged = oldScrollingLayerOffset != m_scrollingLayer->offsetFromRenderer();
|
| + bool clientBoxOffsetChanged = oldScrollingLayerOffset != m_scrollingLayer->offsetFromRenderer();
|
|
|
| IntSize scrollSize(m_owningLayer->scrollWidth(), m_owningLayer->scrollHeight());
|
| - if (scrollSize != m_scrollingContentsLayer->size() || paddingBoxOffsetChanged)
|
| + if (scrollSize != m_scrollingContentsLayer->size() || clientBoxOffsetChanged)
|
| m_scrollingContentsLayer->setNeedsDisplay();
|
|
|
| - IntSize scrollingContentsOffset = toIntSize(paddingBox.location() - scrollOffset);
|
| + IntSize scrollingContentsOffset = toIntSize(clientBox.location() - adjustedScrollOffset);
|
| if (scrollingContentsOffset != m_scrollingContentsLayer->offsetFromRenderer() || scrollSize != m_scrollingContentsLayer->size())
|
| compositor()->scrollingLayerDidChange(m_owningLayer);
|
|
|
|
|