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

Side by Side Diff: cc/layers/layer.cc

Issue 2733633002: Handle nested position:sticky elements correctly (compositor) (Closed)
Patch Set: Revert float changes to unittests too Created 3 years, 9 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 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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/layers/layer.h" 5 #include "cc/layers/layer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 SetSubtreePropertyChanged(); 575 SetSubtreePropertyChanged();
576 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 576 PropertyTrees* property_trees = layer_tree_host_->property_trees();
577 if (TransformNode* transform_node = 577 if (TransformNode* transform_node =
578 property_trees->transform_tree.FindNodeFromOwningLayerId(id())) { 578 property_trees->transform_tree.FindNodeFromOwningLayerId(id())) {
579 DCHECK_EQ(transform_tree_index(), transform_node->id); 579 DCHECK_EQ(transform_tree_index(), transform_node->id);
580 transform_node->update_post_local_transform(position, transform_origin()); 580 transform_node->update_post_local_transform(position, transform_origin());
581 if (transform_node->sticky_position_constraint_id >= 0) { 581 if (transform_node->sticky_position_constraint_id >= 0) {
582 StickyPositionNodeData* sticky_data = 582 StickyPositionNodeData* sticky_data =
583 property_trees->transform_tree.StickyPositionData( 583 property_trees->transform_tree.StickyPositionData(
584 transform_tree_index()); 584 transform_tree_index());
585 // TODO(smcgruer): Pass main thread sticky-shifting offsets of
586 // non-promoted ancestors, or promote all ancestor sticky elements.
587 // See http://crbug.com/702229
585 sticky_data->main_thread_offset = 588 sticky_data->main_thread_offset =
586 position.OffsetFromOrigin() - 589 position.OffsetFromOrigin() -
587 sticky_data->constraints.parent_relative_sticky_box_offset 590 sticky_data->constraints.parent_relative_sticky_box_offset
588 .OffsetFromOrigin(); 591 .OffsetFromOrigin();
589 } 592 }
590 transform_node->needs_local_transform_update = true; 593 transform_node->needs_local_transform_update = true;
591 transform_node->transform_changed = true; 594 transform_node->transform_changed = true;
592 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 595 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
593 SetNeedsCommitNoRebuild(); 596 SetNeedsCommitNoRebuild();
594 return; 597 return;
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after
1479 ->num_copy_requests_in_subtree; 1482 ->num_copy_requests_in_subtree;
1480 } 1483 }
1481 1484
1482 gfx::Transform Layer::screen_space_transform() const { 1485 gfx::Transform Layer::screen_space_transform() const {
1483 DCHECK_NE(transform_tree_index_, TransformTree::kInvalidNodeId); 1486 DCHECK_NE(transform_tree_index_, TransformTree::kInvalidNodeId);
1484 return draw_property_utils::ScreenSpaceTransform( 1487 return draw_property_utils::ScreenSpaceTransform(
1485 this, layer_tree_host_->property_trees()->transform_tree); 1488 this, layer_tree_host_->property_trees()->transform_tree);
1486 } 1489 }
1487 1490
1488 } // namespace cc 1491 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698