Index: cc/trees/property_tree.cc |
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
index cae3c1f4d2a26e16ace84114a10eb162444137e8..c45ec7f843f97bb479d2bc1efa0b377949bdc17b 100644 |
--- a/cc/trees/property_tree.cc |
+++ b/cc/trees/property_tree.cc |
@@ -328,6 +328,15 @@ void TransformTree::UpdateLocalTransform(TransformNode* node) { |
if (NeedsSourceToParentUpdate(node)) { |
gfx::Transform to_parent; |
ComputeTransform(node->source_node_id, node->parent_id, &to_parent); |
+ gfx::Vector2dF unsnapping; |
+ TransformNode* current; |
+ for (current = Node(node->source_node_id); current->id > node->parent_id; |
+ current = parent(current)) |
+ unsnapping.Subtract(current->scroll_snap); |
+ for (TransformNode* parent_node = Node(node->parent_id); |
+ parent_node->id >= current->id; parent_node = parent(parent_node)) |
+ unsnapping.Subtract(parent_node->scroll_snap); |
ajuma
2016/07/26 19:34:41
This is the right general approach, but I think th
|
+ to_parent.Translate(unsnapping.x(), unsnapping.y()); |
node->source_to_parent = to_parent.To2dTranslation(); |
} |