Chromium Code Reviews| 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()) |
|
Julien - ping for review
2013/05/10 01:03:34
This function is a misnomer as it isn't really log
|
| + 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); |