OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/views/controls/scrollbar/overlay_scroll_bar.h" | 5 #include "ui/views/controls/scrollbar/overlay_scroll_bar.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "third_party/skia/include/core/SkColor.h" | 8 #include "third_party/skia/include/core/SkColor.h" |
9 #include "ui/compositor/scoped_layer_animation_settings.h" | 9 #include "ui/compositor/scoped_layer_animation_settings.h" |
10 #include "ui/gfx/canvas.h" | 10 #include "ui/gfx/canvas.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 | 27 |
28 OverlayScrollBar::Thumb::Thumb(OverlayScrollBar* scroll_bar) | 28 OverlayScrollBar::Thumb::Thumb(OverlayScrollBar* scroll_bar) |
29 : BaseScrollBarThumb(scroll_bar), scroll_bar_(scroll_bar) { | 29 : BaseScrollBarThumb(scroll_bar), scroll_bar_(scroll_bar) { |
30 // |scroll_bar| isn't done being constructed; it's not safe to do anything | 30 // |scroll_bar| isn't done being constructed; it's not safe to do anything |
31 // that might reference it yet. | 31 // that might reference it yet. |
32 } | 32 } |
33 | 33 |
34 OverlayScrollBar::Thumb::~Thumb() {} | 34 OverlayScrollBar::Thumb::~Thumb() {} |
35 | 35 |
36 void OverlayScrollBar::Thumb::Init() { | 36 void OverlayScrollBar::Thumb::Init() { |
37 SetPaintToLayer(true); | 37 SetPaintToLayer(); |
38 layer()->SetFillsBoundsOpaquely(false); | 38 layer()->SetFillsBoundsOpaquely(false); |
39 // Animate all changes to the layer except the first one. | 39 // Animate all changes to the layer except the first one. |
40 OnStateChanged(); | 40 OnStateChanged(); |
41 layer()->SetAnimator(ui::LayerAnimator::CreateImplicitAnimator()); | 41 layer()->SetAnimator(ui::LayerAnimator::CreateImplicitAnimator()); |
42 } | 42 } |
43 | 43 |
44 gfx::Size OverlayScrollBar::Thumb::GetPreferredSize() const { | 44 gfx::Size OverlayScrollBar::Thumb::GetPreferredSize() const { |
45 // The visual size of the thumb is kThumbThickness, but it slides back and | 45 // The visual size of the thumb is kThumbThickness, but it slides back and |
46 // forth by kThumbHoverOffset. To make event targetting work well, expand the | 46 // forth by kThumbHoverOffset. To make event targetting work well, expand the |
47 // width of the thumb such that it's always taking up the full width of the | 47 // width of the thumb such that it's always taking up the full width of the |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 layer()->SetOpacity(kThumbHoverAlpha); | 106 layer()->SetOpacity(kThumbHoverAlpha); |
107 } | 107 } |
108 } | 108 } |
109 | 109 |
110 OverlayScrollBar::OverlayScrollBar(bool horizontal) | 110 OverlayScrollBar::OverlayScrollBar(bool horizontal) |
111 : BaseScrollBar(horizontal), hide_timer_(false, false) { | 111 : BaseScrollBar(horizontal), hide_timer_(false, false) { |
112 auto thumb = new Thumb(this); | 112 auto thumb = new Thumb(this); |
113 SetThumb(thumb); | 113 SetThumb(thumb); |
114 thumb->Init(); | 114 thumb->Init(); |
115 set_notify_enter_exit_on_child(true); | 115 set_notify_enter_exit_on_child(true); |
116 SetPaintToLayer(true); | 116 SetPaintToLayer(); |
117 layer()->SetMasksToBounds(true); | 117 layer()->SetMasksToBounds(true); |
118 layer()->SetFillsBoundsOpaquely(false); | 118 layer()->SetFillsBoundsOpaquely(false); |
119 } | 119 } |
120 | 120 |
121 OverlayScrollBar::~OverlayScrollBar() {} | 121 OverlayScrollBar::~OverlayScrollBar() {} |
122 | 122 |
123 gfx::Rect OverlayScrollBar::GetTrackBounds() const { | 123 gfx::Rect OverlayScrollBar::GetTrackBounds() const { |
124 gfx::Rect local = GetLocalBounds(); | 124 gfx::Rect local = GetLocalBounds(); |
125 // The track has to be wide enough for the thumb. | 125 // The track has to be wide enough for the thumb. |
126 local.Inset(gfx::Insets(IsHorizontal() ? -kThumbHoverOffset : 0, | 126 local.Inset(gfx::Insets(IsHorizontal() ? -kThumbHoverOffset : 0, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 | 170 |
171 void OverlayScrollBar::StartHideCountdown() { | 171 void OverlayScrollBar::StartHideCountdown() { |
172 if (IsMouseHovered()) | 172 if (IsMouseHovered()) |
173 return; | 173 return; |
174 hide_timer_.Start( | 174 hide_timer_.Start( |
175 FROM_HERE, base::TimeDelta::FromSeconds(1), | 175 FROM_HERE, base::TimeDelta::FromSeconds(1), |
176 base::Bind(&OverlayScrollBar::Hide, base::Unretained(this))); | 176 base::Bind(&OverlayScrollBar::Hide, base::Unretained(this))); |
177 } | 177 } |
178 | 178 |
179 } // namespace views | 179 } // namespace views |
OLD | NEW |