| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index d47f504871741c890f5daf7280c13c7412cf7e2e..14f8208a35fcb032a554d4c2b8af6ef9f5e538dd 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -209,6 +209,7 @@ LayerTreeHostImpl::LayerTreeHostImpl(
|
| wheel_scrolling_(false),
|
| scroll_affects_scroll_handler_(false),
|
| scroll_layer_id_when_mouse_over_scrollbar_(Layer::INVALID_ID),
|
| + scroll_layer_id_when_mouse_near_scrollbar_(Layer::INVALID_ID),
|
| captured_scrollbar_layer_id_(Layer::INVALID_ID),
|
| tile_priorities_dirty_(false),
|
| settings_(settings),
|
| @@ -3237,6 +3238,7 @@ void LayerTreeHostImpl::MouseUp() {
|
| }
|
|
|
| void LayerTreeHostImpl::MouseMoveAt(const gfx::Point& viewport_point) {
|
| + scroll_layer_id_when_mouse_near_scrollbar_ = Layer::INVALID_ID;
|
| gfx::PointF device_viewport_point = gfx::ScalePoint(
|
| gfx::PointF(viewport_point), active_tree_->device_scale_factor());
|
| LayerImpl* layer_impl =
|
| @@ -3261,6 +3263,8 @@ void LayerTreeHostImpl::MouseMoveAt(const gfx::Point& viewport_point) {
|
| if (!animation_controller)
|
| return;
|
|
|
| + scroll_layer_id_when_mouse_near_scrollbar_ = scroll_layer_impl->id();
|
| +
|
| float distance_to_scrollbar = std::numeric_limits<float>::max();
|
| for (ScrollbarLayerImplBase* scrollbar :
|
| ScrollbarsFor(scroll_layer_impl->id()))
|
| @@ -3272,6 +3276,26 @@ void LayerTreeHostImpl::MouseMoveAt(const gfx::Point& viewport_point) {
|
| active_tree_->device_scale_factor());
|
| }
|
|
|
| +void LayerTreeHostImpl::MouseLeave() {
|
| + // scroll_layer_id_when_mouse_near_scrollbar_ and
|
| + // scroll_layer_id_when_mouse_over_scrollbar_ should not be both true
|
| + DCHECK(scroll_layer_id_when_mouse_near_scrollbar_ == Layer::INVALID_ID ||
|
| + scroll_layer_id_when_mouse_over_scrollbar_ == Layer::INVALID_ID);
|
| +
|
| + int scroll_layer_id =
|
| + scroll_layer_id_when_mouse_near_scrollbar_ != Layer::INVALID_ID
|
| + ? scroll_layer_id_when_mouse_near_scrollbar_
|
| + : scroll_layer_id_when_mouse_over_scrollbar_;
|
| +
|
| + ScrollbarAnimationController* animation_controller =
|
| + ScrollbarAnimationControllerForId(scroll_layer_id);
|
| +
|
| + if (animation_controller)
|
| + animation_controller->DidMouseMoveOffScrollbar();
|
| +
|
| + scroll_layer_id_when_mouse_over_scrollbar_ = Layer::INVALID_ID;
|
| +}
|
| +
|
| void LayerTreeHostImpl::HandleMouseOverScrollbar(LayerImpl* layer_impl) {
|
| int new_id = Layer::INVALID_ID;
|
| if (layer_impl && layer_impl->ToScrollbarLayer())
|
|
|