Index: cc/ScrollbarLayerChromium.cpp |
diff --git a/cc/ScrollbarLayerChromium.cpp b/cc/ScrollbarLayerChromium.cpp |
index 85801e6f2707449fb721e4e15d9ab60f83b64b35..703a398af5a180020b43cc7efea111bc4b0eb38f 100644 |
--- a/cc/ScrollbarLayerChromium.cpp |
+++ b/cc/ScrollbarLayerChromium.cpp |
@@ -122,6 +122,16 @@ private: |
WebKit::WebScrollbar::ScrollbarPart m_trackPart; |
}; |
+bool ScrollbarLayerChromium::needsContentsScale() const |
+{ |
+ return true; |
+} |
+ |
+IntSize ScrollbarLayerChromium::contentBounds() const |
+{ |
+ return IntSize(lroundf(bounds().width() * contentsScale()), lroundf(bounds().height() * contentsScale())); |
+} |
+ |
class ScrollbarThumbPainter : public LayerPainterChromium { |
WTF_MAKE_NONCOPYABLE(ScrollbarThumbPainter); |
public: |
@@ -204,8 +214,10 @@ void ScrollbarLayerChromium::updatePart(LayerTextureUpdater* painter, LayerTextu |
return; |
// Paint and upload the entire part. |
+ float widthScale = static_cast<float>(contentBounds().width()) / bounds().width(); |
+ float heightScale = static_cast<float>(contentBounds().height()) / bounds().height(); |
IntRect paintedOpaqueRect; |
- painter->prepareToUpdate(rect, rect.size(), 1, 1, paintedOpaqueRect, stats); |
+ painter->prepareToUpdate(rect, rect.size(), widthScale, heightScale, paintedOpaqueRect, stats); |
texture->prepareRect(rect, stats); |
IntSize destOffset(0, 0); |
@@ -231,8 +243,8 @@ void ScrollbarLayerChromium::setTexturePriorities(const CCPriorityCalculator&) |
m_foreTrack->texture()->setRequestPriority(CCPriorityCalculator::uiPriority(drawsToRoot)); |
} |
if (m_thumb) { |
- WebKit::WebRect thumbRect = m_geometry->thumbRect(m_scrollbar.get()); |
- m_thumb->texture()->setDimensions(IntSize(thumbRect.width, thumbRect.height), m_textureFormat); |
+ IntSize thumbSize = layerRectToContentRect(m_geometry->thumbRect(m_scrollbar.get())).size(); |
+ m_thumb->texture()->setDimensions(thumbSize, m_textureFormat); |
m_thumb->texture()->setRequestPriority(CCPriorityCalculator::uiPriority(drawsToRoot)); |
} |
} |
@@ -245,14 +257,14 @@ void ScrollbarLayerChromium::update(CCTextureUpdateQueue& queue, const CCOcclusi |
createTextureUpdaterIfNeeded(); |
IntPoint scrollbarOrigin(m_scrollbar->location().x, m_scrollbar->location().y); |
- IntRect contentRect(scrollbarOrigin, contentBounds()); |
+ IntRect contentRect = layerRectToContentRect(WebKit::WebRect(scrollbarOrigin.x(), scrollbarOrigin.y(), bounds().width(), bounds().height())); |
updatePart(m_backTrackUpdater.get(), m_backTrack.get(), contentRect, queue, stats); |
if (m_foreTrack && m_foreTrackUpdater) |
updatePart(m_foreTrackUpdater.get(), m_foreTrack.get(), contentRect, queue, stats); |
// Consider the thumb to be at the origin when painting. |
WebKit::WebRect thumbRect = m_geometry->thumbRect(m_scrollbar.get()); |
- IntRect originThumbRect = IntRect(0, 0, thumbRect.width, thumbRect.height); |
+ IntRect originThumbRect = layerRectToContentRect(WebKit::WebRect(0, 0, thumbRect.width, thumbRect.height)); |
if (!originThumbRect.isEmpty()) |
updatePart(m_thumbUpdater.get(), m_thumb.get(), originThumbRect, queue, stats); |
} |