diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-09 01:11:35 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-09 01:11:35 +0000 |
commit | 41bee9f028ef02b0230b7680220a8b3b9d46771d (patch) | |
tree | 6902877cb6e6811afb24eca552fe9cc1791c97b5 /cc/layers | |
parent | 7049bab85eb2d75b6def1eb982c7cc96fe975046 (diff) | |
download | chromium_src-41bee9f028ef02b0230b7680220a8b3b9d46771d.zip chromium_src-41bee9f028ef02b0230b7680220a8b3b9d46771d.tar.gz chromium_src-41bee9f028ef02b0230b7680220a8b3b9d46771d.tar.bz2 |
Compute solid-color scrollbar properties on all platforms.
It's unnecessary to gate solid-color scrollbar properties on whether
the root container masks to bounds, since the vertical adjust should
resolve to zero in this case anyway. It's necessary to set VisibleToTotalLengthRatio
for desktop overlay scrollbars to be sized correctly.
BUG=331605
TEST=None
R=aelias
Review URL: https://codereview.chromium.org/106733005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243721 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layers')
-rw-r--r-- | cc/layers/painted_scrollbar_layer_impl.cc | 4 | ||||
-rw-r--r-- | cc/layers/painted_scrollbar_layer_impl.h | 1 | ||||
-rw-r--r-- | cc/layers/scrollbar_layer_impl_base.cc | 3 | ||||
-rw-r--r-- | cc/layers/scrollbar_layer_impl_base.h | 3 | ||||
-rw-r--r-- | cc/layers/solid_color_scrollbar_layer_impl.cc | 4 | ||||
-rw-r--r-- | cc/layers/solid_color_scrollbar_layer_impl.h | 1 |
6 files changed, 16 insertions, 0 deletions
diff --git a/cc/layers/painted_scrollbar_layer_impl.cc b/cc/layers/painted_scrollbar_layer_impl.cc index a7fdfa3..d67fbe4 100644 --- a/cc/layers/painted_scrollbar_layer_impl.cc +++ b/cc/layers/painted_scrollbar_layer_impl.cc @@ -169,6 +169,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"; } diff --git a/cc/layers/painted_scrollbar_layer_impl.h b/cc/layers/painted_scrollbar_layer_impl.h index a094416..16cfa55 100644 --- a/cc/layers/painted_scrollbar_layer_impl.h +++ b/cc/layers/painted_scrollbar_layer_impl.h @@ -55,6 +55,7 @@ class CC_EXPORT PaintedScrollbarLayerImpl : public ScrollbarLayerImplBase { virtual int ThumbLength() const OVERRIDE; virtual float TrackLength() const OVERRIDE; virtual int TrackStart() const OVERRIDE; + virtual bool IsThumbResizable() const OVERRIDE; private: virtual const char* LayerTypeAsString() const OVERRIDE; diff --git a/cc/layers/scrollbar_layer_impl_base.cc b/cc/layers/scrollbar_layer_impl_base.cc index 362465b..e9b9569 100644 --- a/cc/layers/scrollbar_layer_impl_base.cc +++ b/cc/layers/scrollbar_layer_impl_base.cc @@ -66,6 +66,9 @@ void ScrollbarLayerImplBase::SetVerticalAdjust(float vertical_adjust) { } void ScrollbarLayerImplBase::SetVisibleToTotalLengthRatio(float ratio) { + if (!IsThumbResizable()) + return; + if (visible_to_total_length_ratio_ == ratio) return; visible_to_total_length_ratio_ = ratio; diff --git a/cc/layers/scrollbar_layer_impl_base.h b/cc/layers/scrollbar_layer_impl_base.h index 360ef97..f75808e 100644 --- a/cc/layers/scrollbar_layer_impl_base.h +++ b/cc/layers/scrollbar_layer_impl_base.h @@ -64,6 +64,9 @@ class CC_EXPORT ScrollbarLayerImplBase : public LayerImpl { virtual int ThumbLength() const = 0; virtual float TrackLength() const = 0; virtual int TrackStart() const = 0; + // Indicates whether the thumb length can be changed without going back to the + // main thread. + virtual bool IsThumbResizable() const = 0; private: int scroll_layer_id_; diff --git a/cc/layers/solid_color_scrollbar_layer_impl.cc b/cc/layers/solid_color_scrollbar_layer_impl.cc index 9f46a80..5c63203 100644 --- a/cc/layers/solid_color_scrollbar_layer_impl.cc +++ b/cc/layers/solid_color_scrollbar_layer_impl.cc @@ -72,6 +72,10 @@ int SolidColorScrollbarLayerImpl::TrackStart() const { return 0; } +bool SolidColorScrollbarLayerImpl::IsThumbResizable() const { + return true; +} + void SolidColorScrollbarLayerImpl::AppendQuads(QuadSink* quad_sink, AppendQuadsData* append_quads_data) { gfx::Rect thumb_quad_rect = ComputeThumbQuadRect(); diff --git a/cc/layers/solid_color_scrollbar_layer_impl.h b/cc/layers/solid_color_scrollbar_layer_impl.h index 56cbacd..b725ed5 100644 --- a/cc/layers/solid_color_scrollbar_layer_impl.h +++ b/cc/layers/solid_color_scrollbar_layer_impl.h @@ -41,6 +41,7 @@ class CC_EXPORT SolidColorScrollbarLayerImpl : public ScrollbarLayerImplBase { virtual int ThumbLength() const OVERRIDE; virtual float TrackLength() const OVERRIDE; virtual int TrackStart() const OVERRIDE; + virtual bool IsThumbResizable() const OVERRIDE; private: int thumb_thickness_; |