Index: cc/trees/property_tree.h |
diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h |
index f7e90ea7b47277c8df23da1df91cfd84ecc80de1..929cacf42b940b4df7ef90823f4ffb55a9f27048 100644 |
--- a/cc/trees/property_tree.h |
+++ b/cc/trees/property_tree.h |
@@ -113,7 +113,24 @@ struct StickyPositionNodeData { |
// by computing the additional offset necessary to keep the element stuck. |
gfx::Vector2dF main_thread_offset; |
- StickyPositionNodeData() : scroll_ancestor(-1) {} |
+ // In order to properly compute the sticky offset, we need to know if we have |
+ // any sticky ancestors both between ourselves and our containing block and |
+ // between our containing block and the viewport. These ancestors are then |
+ // used to correct the constraining rect locations. |
+ int nearest_node_shifting_sticky_box; |
+ int nearest_node_shifting_containing_block; |
+ |
+ // For performance we cache our accumulated sticky offset to allow descendant |
+ // sticky elements to offset their constraint rects. Because we can either |
+ // affect the sticky box constraint rect or the containing block constraint |
+ // rect, we need to accumulate both. |
+ gfx::Vector2dF total_sticky_box_sticky_offset; |
+ gfx::Vector2dF total_containing_block_sticky_offset; |
+ |
+ StickyPositionNodeData() |
+ : scroll_ancestor(-1), |
flackr
2017/03/17 18:04:08
nit: Can we change these ids to kInvalidNodeId?
smcgruer
2017/03/17 18:42:42
Done.
|
+ nearest_node_shifting_sticky_box(-1), |
+ nearest_node_shifting_containing_block(-1) {} |
}; |
class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { |