Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 6cdc4234b68b3099a485fda32f3511fa46ee71cc..2221f6b2e83e06f22f53f06190a3c90a90f10c76 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -207,7 +207,9 @@ void LayerImpl::DistributeScroll(ScrollState* scroll_state) { |
void LayerImpl::ApplyScroll(ScrollState* scroll_state) { |
DCHECK(scroll_state); |
- layer_tree_impl()->ApplyScroll(this, scroll_state); |
+ ScrollNode* node = layer_tree_impl()->property_trees()->scroll_tree.Node( |
+ scroll_tree_index()); |
+ layer_tree_impl()->ApplyScroll(node, scroll_state); |
} |
void LayerImpl::SetNumDescendantsThatDrawContent(int num_descendants) { |
@@ -427,20 +429,9 @@ void LayerImpl::GetContentsResourceId(ResourceId* resource_id, |
} |
gfx::Vector2dF LayerImpl::ScrollBy(const gfx::Vector2dF& scroll) { |
- gfx::ScrollOffset adjusted_scroll(scroll); |
- if (!user_scrollable_horizontal_) |
- adjusted_scroll.set_x(0); |
- if (!user_scrollable_vertical_) |
- adjusted_scroll.set_y(0); |
- DCHECK(scrollable()); |
- gfx::ScrollOffset old_offset = CurrentScrollOffset(); |
- gfx::ScrollOffset new_offset = |
- ClampScrollOffsetToLimits(old_offset + adjusted_scroll); |
- SetCurrentScrollOffset(new_offset); |
- |
- gfx::ScrollOffset unscrolled = |
- old_offset + gfx::ScrollOffset(scroll) - new_offset; |
- return gfx::Vector2dF(unscrolled.x(), unscrolled.y()); |
+ ScrollTree& scroll_tree = layer_tree_impl()->property_trees()->scroll_tree; |
+ ScrollNode* scroll_node = scroll_tree.Node(scroll_tree_index()); |
+ return scroll_tree.ScrollBy(scroll_node, scroll, layer_tree_impl()); |
} |
void LayerImpl::SetScrollClipLayer(int scroll_clip_layer_id) { |
@@ -460,6 +451,24 @@ bool LayerImpl::scrollable() const { |
return scroll_clip_layer_id_ != Layer::INVALID_ID; |
} |
+void LayerImpl::set_user_scrollable_horizontal(bool scrollable) { |
+ user_scrollable_horizontal_ = scrollable; |
+ if (!layer_tree_impl_->property_trees()->needs_rebuild && layer_tree_impl_ && |
ajuma
2016/03/16 21:49:24
Horizontal/vertical scrollability should never cha
sunxd
2016/03/16 23:30:23
Done.
|
+ scroll_tree_index_ != -1) |
+ layer_tree_impl_->property_trees() |
+ ->scroll_tree.Node(scroll_tree_index_) |
+ ->data.user_scrollable_horizontal = scrollable; |
+} |
+ |
+void LayerImpl::set_user_scrollable_vertical(bool scrollable) { |
+ user_scrollable_vertical_ = scrollable; |
+ if (!layer_tree_impl_->property_trees()->needs_rebuild && layer_tree_impl_ && |
+ scroll_tree_index_ != -1) |
+ layer_tree_impl_->property_trees() |
+ ->scroll_tree.Node(scroll_tree_index_) |
+ ->data.user_scrollable_vertical = scrollable; |
+} |
+ |
bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { |
return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ |
: user_scrollable_vertical_; |