Chromium Code Reviews| Index: cc/trees/property_tree.cc |
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
| index ac8b60bb2b9184761af6a0461fbb4afffb5b3256..58d36f362b713baba8aa2751c419b1ba3c61392a 100644 |
| --- a/cc/trees/property_tree.cc |
| +++ b/cc/trees/property_tree.cc |
| @@ -479,7 +479,8 @@ ScrollNodeData::ScrollNodeData() |
| contains_non_fast_scrollable_region(false), |
| max_scroll_offset_affected_by_page_scale(false), |
| is_inner_viewport_scroll_layer(false), |
| - is_outer_viewport_scroll_layer(false) {} |
| + is_outer_viewport_scroll_layer(false), |
| + transform_id(0) {} |
| bool ScrollNodeData::operator==(const ScrollNodeData& other) const { |
| return scrollable == other.scrollable && |
| @@ -492,7 +493,9 @@ bool ScrollNodeData::operator==(const ScrollNodeData& other) const { |
| other.max_scroll_offset_affected_by_page_scale && |
| is_inner_viewport_scroll_layer == |
| other.is_inner_viewport_scroll_layer && |
| - is_outer_viewport_scroll_layer == other.is_outer_viewport_scroll_layer; |
| + is_outer_viewport_scroll_layer == |
| + other.is_outer_viewport_scroll_layer && |
| + transform_id == other.transform_id; |
| } |
| void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { |
| @@ -509,6 +512,7 @@ void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { |
| max_scroll_offset_affected_by_page_scale); |
| data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer); |
| data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer); |
| + data->set_transform_id(transform_id); |
| } |
| void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { |
| @@ -525,6 +529,7 @@ void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { |
| data.max_scroll_offset_affected_by_page_scale(); |
| is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); |
| is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); |
| + transform_id = data.transform_id(); |
| } |
| void TransformTree::clear() { |
| @@ -1278,6 +1283,16 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scroll_node_id) const { |
| return max_offset; |
| } |
| +gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const { |
|
jaydasika
2016/02/11 23:38:56
Question : Is Scroll Node creation reasons a subse
sunxd
2016/02/12 15:33:30
So we are only interested with ScreenSpaceTransfor
ajuma
2016/02/12 17:03:01
For TryScroll we might be ok, but I'm not sure if
|
| + const ScrollNode* scroll_node = Node(scroll_node_id); |
| + const TransformNode* transform_node = |
| + property_trees()->transform_tree.Node(scroll_node->data.transform_id); |
| + gfx::Transform screen_space_transform = transform_node->data.to_screen; |
| + if (transform_node->data.flattens_inherited_transform) |
| + screen_space_transform.FlattenTo2d(); |
|
ajuma
2016/02/12 17:03:01
I believe this already happens when to_screen is c
|
| + return screen_space_transform; |
| +} |
| + |
| PropertyTrees::PropertyTrees() |
| : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { |
| transform_tree.SetPropertyTrees(this); |