summaryrefslogtreecommitdiffstats
path: root/chromium/cc/layers/painted_scrollbar_layer_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/layers/painted_scrollbar_layer_impl.cc')
-rw-r--r--chromium/cc/layers/painted_scrollbar_layer_impl.cc28
1 files changed, 20 insertions, 8 deletions
diff --git a/chromium/cc/layers/painted_scrollbar_layer_impl.cc b/chromium/cc/layers/painted_scrollbar_layer_impl.cc
index a7fdfa3081d..b83419f90d1 100644
--- a/chromium/cc/layers/painted_scrollbar_layer_impl.cc
+++ b/chromium/cc/layers/painted_scrollbar_layer_impl.cc
@@ -29,7 +29,7 @@ PaintedScrollbarLayerImpl::PaintedScrollbarLayerImpl(
LayerTreeImpl* tree_impl,
int id,
ScrollbarOrientation orientation)
- : ScrollbarLayerImplBase(tree_impl, id, orientation, false),
+ : ScrollbarLayerImplBase(tree_impl, id, orientation, false, false),
track_ui_resource_id_(0),
thumb_ui_resource_id_(0),
thumb_thickness_(0),
@@ -78,24 +78,29 @@ void PaintedScrollbarLayerImpl::AppendQuads(
gfx::Rect bounds_rect(bounds());
gfx::Rect content_bounds_rect(content_bounds());
- SharedQuadState* shared_quad_state =
- quad_sink->UseSharedQuadState(CreateSharedQuadState());
- AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
+ SharedQuadState* shared_quad_state = quad_sink->CreateSharedQuadState();
+ PopulateSharedQuadState(shared_quad_state);
+
+ AppendDebugBorderQuad(
+ quad_sink, content_bounds(), shared_quad_state, append_quads_data);
gfx::Rect thumb_quad_rect = ComputeThumbQuadRect();
+ gfx::Rect visible_thumb_quad_rect =
+ quad_sink->UnoccludedContentRect(thumb_quad_rect, draw_transform());
ResourceProvider::ResourceId thumb_resource_id =
layer_tree_impl()->ResourceIdForUIResource(thumb_ui_resource_id_);
ResourceProvider::ResourceId track_resource_id =
layer_tree_impl()->ResourceIdForUIResource(track_ui_resource_id_);
- if (thumb_resource_id && !thumb_quad_rect.IsEmpty()) {
+ if (thumb_resource_id && !visible_thumb_quad_rect.IsEmpty()) {
gfx::Rect opaque_rect;
const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
quad->SetNew(shared_quad_state,
thumb_quad_rect,
opaque_rect,
+ visible_thumb_quad_rect,
thumb_resource_id,
premultipled_alpha,
uv_top_left,
@@ -103,17 +108,20 @@ void PaintedScrollbarLayerImpl::AppendQuads(
SK_ColorTRANSPARENT,
opacity,
flipped);
- quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
+ quad_sink->Append(quad.PassAs<DrawQuad>());
}
gfx::Rect track_quad_rect = content_bounds_rect;
- if (track_resource_id && !track_quad_rect.IsEmpty()) {
+ gfx::Rect visible_track_quad_rect =
+ quad_sink->UnoccludedContentRect(track_quad_rect, draw_transform());
+ if (track_resource_id && !visible_track_quad_rect.IsEmpty()) {
gfx::Rect opaque_rect(contents_opaque() ? track_quad_rect : gfx::Rect());
const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
quad->SetNew(shared_quad_state,
track_quad_rect,
opaque_rect,
+ visible_track_quad_rect,
track_resource_id,
premultipled_alpha,
uv_top_left,
@@ -121,7 +129,7 @@ void PaintedScrollbarLayerImpl::AppendQuads(
SK_ColorTRANSPARENT,
opacity,
flipped);
- quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
+ quad_sink->Append(quad.PassAs<DrawQuad>());
}
}
@@ -169,6 +177,10 @@ float PaintedScrollbarLayerImpl::TrackLength() const {
return track_length_ + (orientation() == VERTICAL ? vertical_adjust() : 0);
}
+bool PaintedScrollbarLayerImpl::IsThumbResizable() const {
+ return false;
+}
+
const char* PaintedScrollbarLayerImpl::LayerTypeAsString() const {
return "cc::PaintedScrollbarLayerImpl";
}