Chromium Code Reviews| Index: cc/layers/layer_sticky_position_constraint.h |
| diff --git a/cc/layers/layer_sticky_position_constraint.h b/cc/layers/layer_sticky_position_constraint.h |
| index 3f43bc7751ab614b2c12b25c18d73a71cd308012..beb841d908d659ae157dea2b7490458e55304b13 100644 |
| --- a/cc/layers/layer_sticky_position_constraint.h |
| +++ b/cc/layers/layer_sticky_position_constraint.h |
| @@ -7,7 +7,9 @@ |
| #include "cc/base/cc_export.h" |
| -#include "ui/gfx/geometry/rect.h" |
| +#include "ui/gfx/geometry/point_f.h" |
| +#include "ui/gfx/geometry/rect_f.h" |
| +#include "ui/gfx/geometry/vector2d_f.h" |
| namespace cc { |
| @@ -31,18 +33,37 @@ struct CC_EXPORT LayerStickyPositionConstraint { |
| // The layout offset of the sticky box relative to its containing layer. |
| // This is used to detect the sticky offset the main thread has applied |
| // to the layer. |
| - gfx::Point parent_relative_sticky_box_offset; |
| + gfx::PointF parent_relative_sticky_box_offset; |
| // The rectangle corresponding to original layout position of the sticky box |
| // relative to the scroll ancestor. The sticky box is only offset once the |
| // scroll has passed its initial position (e.g. top_offset will only push |
| // the element down from its original position). |
| - gfx::Rect scroll_container_relative_sticky_box_rect; |
| + gfx::RectF scroll_container_relative_sticky_box_rect; |
| // The layout rectangle of the sticky box's containing block relative to the |
| // scroll ancestor. The sticky box is only moved as far as its containing |
| // block boundary. |
| - gfx::Rect scroll_container_relative_containing_block_rect; |
| + gfx::RectF scroll_container_relative_containing_block_rect; |
| + |
| + // The nearest ancestor sticky layers that affect the sticky box constraint |
|
flackr
2017/03/17 15:01:55
Mention layer id in the comment, and -1 for no suc
smcgruer
2017/03/17 17:36:51
Done.
|
| + // rect and the containing block constraint rect respectively. |
| + int nearest_layer_shifting_sticky_box; |
| + int nearest_layer_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; |
| + |
| + // Returns the nearest sticky ancestor layer, or null if no such layer exists. |
|
flackr
2017/03/17 15:01:55
s/null/-1 ?
smcgruer
2017/03/17 17:36:51
Done.
|
| + int NearestStickyAncestor() { |
| + return (nearest_layer_shifting_sticky_box >= 0) |
| + ? nearest_layer_shifting_sticky_box |
| + : nearest_layer_shifting_containing_block; |
| + } |
| bool operator==(const LayerStickyPositionConstraint&) const; |
| bool operator!=(const LayerStickyPositionConstraint&) const; |