summaryrefslogtreecommitdiffstats
path: root/chromium/cc/layers/solid_color_scrollbar_layer_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/layers/solid_color_scrollbar_layer_impl.cc')
-rw-r--r--chromium/cc/layers/solid_color_scrollbar_layer_impl.cc71
1 files changed, 50 insertions, 21 deletions
diff --git a/chromium/cc/layers/solid_color_scrollbar_layer_impl.cc b/chromium/cc/layers/solid_color_scrollbar_layer_impl.cc
index 9f46a8080f5..1e255ab4192 100644
--- a/chromium/cc/layers/solid_color_scrollbar_layer_impl.cc
+++ b/chromium/cc/layers/solid_color_scrollbar_layer_impl.cc
@@ -15,19 +15,31 @@ scoped_ptr<SolidColorScrollbarLayerImpl> SolidColorScrollbarLayerImpl::Create(
int id,
ScrollbarOrientation orientation,
int thumb_thickness,
- bool is_left_side_vertical_scrollbar) {
- return make_scoped_ptr(new SolidColorScrollbarLayerImpl(
- tree_impl, id, orientation, thumb_thickness,
- is_left_side_vertical_scrollbar));
+ int track_start,
+ bool is_left_side_vertical_scrollbar,
+ bool is_overlay) {
+ return make_scoped_ptr(
+ new SolidColorScrollbarLayerImpl(tree_impl,
+ id,
+ orientation,
+ thumb_thickness,
+ track_start,
+ is_left_side_vertical_scrollbar,
+ is_overlay));
}
SolidColorScrollbarLayerImpl::~SolidColorScrollbarLayerImpl() {}
scoped_ptr<LayerImpl> SolidColorScrollbarLayerImpl::CreateLayerImpl(
LayerTreeImpl* tree_impl) {
- return SolidColorScrollbarLayerImpl::Create(
- tree_impl, id(), orientation(), thumb_thickness_,
- is_left_side_vertical_scrollbar()).PassAs<LayerImpl>();
+ return SolidColorScrollbarLayerImpl::Create(tree_impl,
+ id(),
+ orientation(),
+ thumb_thickness_,
+ track_start_,
+ is_left_side_vertical_scrollbar(),
+ is_overlay_scrollbar())
+ .PassAs<LayerImpl>();
}
SolidColorScrollbarLayerImpl::SolidColorScrollbarLayerImpl(
@@ -35,11 +47,19 @@ SolidColorScrollbarLayerImpl::SolidColorScrollbarLayerImpl(
int id,
ScrollbarOrientation orientation,
int thumb_thickness,
- bool is_left_side_vertical_scrollbar)
- : ScrollbarLayerImplBase(tree_impl, id, orientation,
- is_left_side_vertical_scrollbar),
+ int track_start,
+ bool is_left_side_vertical_scrollbar,
+ bool is_overlay)
+ : ScrollbarLayerImplBase(tree_impl,
+ id,
+ orientation,
+ is_left_side_vertical_scrollbar,
+ is_overlay),
thumb_thickness_(thumb_thickness),
- color_(tree_impl->settings().solid_color_scrollbar_color) {}
+ track_start_(track_start),
+ color_(tree_impl->settings().solid_color_scrollbar_color) {
+ SetOpacity(0.f);
+}
void SolidColorScrollbarLayerImpl::PushPropertiesTo(LayerImpl* layer) {
ScrollbarLayerImplBase::PushPropertiesTo(layer);
@@ -63,26 +83,35 @@ int SolidColorScrollbarLayerImpl::ThumbLength() const {
float SolidColorScrollbarLayerImpl::TrackLength() const {
if (orientation() == HORIZONTAL)
- return bounds().width();
+ return bounds().width() - TrackStart() * 2;
else
- return bounds().height() + vertical_adjust();
+ return bounds().height() + vertical_adjust() - TrackStart() * 2;
}
-int SolidColorScrollbarLayerImpl::TrackStart() const {
- return 0;
+int SolidColorScrollbarLayerImpl::TrackStart() const { return track_start_; }
+
+bool SolidColorScrollbarLayerImpl::IsThumbResizable() const {
+ return true;
}
void SolidColorScrollbarLayerImpl::AppendQuads(QuadSink* quad_sink,
AppendQuadsData* append_quads_data) {
- gfx::Rect thumb_quad_rect = ComputeThumbQuadRect();
+ SharedQuadState* shared_quad_state = quad_sink->CreateSharedQuadState();
+ PopulateSharedQuadState(shared_quad_state);
+
+ AppendDebugBorderQuad(
+ quad_sink, content_bounds(), shared_quad_state, append_quads_data);
- SharedQuadState* shared_quad_state =
- quad_sink->UseSharedQuadState(CreateSharedQuadState());
- AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
+ gfx::Rect thumb_quad_rect(ComputeThumbQuadRect());
+ gfx::Rect visible_quad_rect = quad_sink->UnoccludedContentRect(
+ thumb_quad_rect, draw_properties().target_space_transform);
+ if (visible_quad_rect.IsEmpty())
+ return;
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(shared_quad_state, thumb_quad_rect, color_, false);
- quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
+ quad->SetNew(
+ shared_quad_state, thumb_quad_rect, visible_quad_rect, color_, false);
+ quad_sink->Append(quad.PassAs<DrawQuad>());
}
} // namespace cc