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); |