Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: cc/trees/property_tree_builder.cc

Issue 2698843004: Correct for enclosing layers scroll position in sticky_data->main_thread_offset (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 // viewport bounds change, but do not unconditionally move by that delta 752 // viewport bounds change, but do not unconditionally move by that delta
753 // like fixed position nodes. 753 // like fixed position nodes.
754 if (scroll_ancestor->is_inner_viewport_scroll_layer) { 754 if (scroll_ancestor->is_inner_viewport_scroll_layer) {
755 data_for_children->property_trees->transform_tree 755 data_for_children->property_trees->transform_tree
756 .AddNodeAffectedByInnerViewportBoundsDelta(node->id); 756 .AddNodeAffectedByInnerViewportBoundsDelta(node->id);
757 } else if (scroll_ancestor->is_outer_viewport_scroll_layer) { 757 } else if (scroll_ancestor->is_outer_viewport_scroll_layer) {
758 data_for_children->property_trees->transform_tree 758 data_for_children->property_trees->transform_tree
759 .AddNodeAffectedByOuterViewportBoundsDelta(node->id); 759 .AddNodeAffectedByOuterViewportBoundsDelta(node->id);
760 } 760 }
761 } 761 }
762 sticky_data->main_thread_offset = 762
763 layer->position().OffsetFromOrigin() - 763 // The sticky box offset calculated in CompositedLayerMapping must be
764 sticky_data->constraints.parent_relative_sticky_box_offset 764 // adjusted for the enclosing layer's scroll position.
765 .OffsetFromOrigin(); 765 gfx::Point sticky_box_offset(
766 sticky_data->constraints.parent_relative_sticky_box_offset);
767 if (Parent(layer)->id() != scroll_ancestor->owning_layer_id) {
768 sticky_box_offset -= gfx::ScrollOffsetToFlooredVector2d(
769 data_for_children->property_trees->scroll_tree.current_scroll_offset(
770 scroll_ancestor->owning_layer_id));
771 }
772
773 sticky_data->main_thread_offset = layer->position().OffsetFromOrigin() -
774 sticky_box_offset.OffsetFromOrigin();
766 } 775 }
767 776
768 node->needs_local_transform_update = true; 777 node->needs_local_transform_update = true;
769 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); 778 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id);
770 779
771 layer->set_offset_to_transform_parent(gfx::Vector2dF()); 780 layer->set_offset_to_transform_parent(gfx::Vector2dF());
772 781
773 // Flattening (if needed) will be handled by |node|. 782 // Flattening (if needed) will be handled by |node|.
774 layer->set_should_flatten_transform_from_property_tree(false); 783 layer->set_should_flatten_transform_from_property_tree(false);
775 784
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 color = SkColorSetA(color, 255); 1552 color = SkColorSetA(color, 255);
1544 BuildPropertyTreesTopLevelInternal( 1553 BuildPropertyTreesTopLevelInternal(
1545 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1554 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1546 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1555 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1547 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1556 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1548 device_transform, property_trees, color); 1557 device_transform, property_trees, color);
1549 property_trees->ResetCachedData(); 1558 property_trees->ResetCachedData();
1550 } 1559 }
1551 1560
1552 } // namespace cc 1561 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698