| Index: cc/layers/scrollbar_layer_impl_base.cc
|
| diff --git a/cc/layers/scrollbar_layer_impl_base.cc b/cc/layers/scrollbar_layer_impl_base.cc
|
| index 839c0b7f927d488f9ce76813ebd40b7abf66569f..06a91c88e793fa1d4db3529e6c002fa752282a0a 100644
|
| --- a/cc/layers/scrollbar_layer_impl_base.cc
|
| +++ b/cc/layers/scrollbar_layer_impl_base.cc
|
| @@ -107,6 +107,37 @@ bool ScrollbarLayerImplBase::SetThumbThicknessScaleFactor(float factor) {
|
| return true;
|
| }
|
|
|
| +gfx::Rect ScrollbarLayerImplBase::ComputeExpandedThumbQuadRect() const {
|
| + DCHECK(is_overlay_scrollbar());
|
| + float track_length = TrackLength();
|
| + int thumb_length = ThumbLength();
|
| + int thumb_thickness = ThumbThickness();
|
| + float maximum = scroll_layer_length_ - clip_layer_length_;
|
| +
|
| + // With the length known, we can compute the thumb's position.
|
| + float clamped_current_pos = std::min(std::max(current_pos_, 0.f), maximum);
|
| +
|
| + int thumb_offset = TrackStart();
|
| + if (maximum > 0) {
|
| + float ratio = clamped_current_pos / maximum;
|
| + float max_offset = track_length - thumb_length;
|
| + thumb_offset += static_cast<int>(ratio * max_offset);
|
| + }
|
| +
|
| + gfx::RectF thumb_rect;
|
| + if (orientation_ == HORIZONTAL) {
|
| + thumb_rect = gfx::RectF(thumb_offset, vertical_adjust_, thumb_length,
|
| + thumb_thickness);
|
| + } else {
|
| + thumb_rect = gfx::RectF(is_left_side_vertical_scrollbar_
|
| + ? bounds().width() - thumb_thickness
|
| + : 0,
|
| + thumb_offset, thumb_thickness, thumb_length);
|
| + }
|
| +
|
| + return gfx::ToEnclosingRect(thumb_rect);
|
| +}
|
| +
|
| gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect() const {
|
| // Thumb extent is the length of the thumb in the scrolling direction, thumb
|
| // thickness is in the perpendicular direction. Here's an example of a
|
|
|