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

Unified Diff: cc/trees/property_tree_builder.cc

Issue 994843002: Account for fixed positioning once when computing parent offset (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: compare rects, not strings. Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_common_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree_builder.cc
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
index 0db2ad706ae5e83e27cfebda3aebb86da5363b2f..1657d52d3df2b68e2b6560c51487bc7eec854c8d 100644
--- a/cc/trees/property_tree_builder.cc
+++ b/cc/trees/property_tree_builder.cc
@@ -131,11 +131,17 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
Layer* transform_parent = GetTransformParent(data_from_ancestor, layer);
- // May be non-zero if layer is fixed or has a scroll parent.
gfx::Vector2dF parent_offset;
if (transform_parent) {
- // TODO(vollick): This is to mimic existing bugs (crbug.com/441447).
- if (!is_fixed) {
+ if (layer->scroll_parent()) {
+ gfx::Transform to_parent;
+ Layer* source = layer->parent();
+ parent_offset += source->offset_to_transform_parent();
+ data_from_ancestor.transform_tree->ComputeTransform(
+ source->transform_tree_index(),
+ transform_parent->transform_tree_index(), &to_parent);
+ parent_offset += to_parent.To2dTranslation();
+ } else if (!is_fixed) {
parent_offset = transform_parent->offset_to_transform_parent();
} else if (data_from_ancestor.transform_tree_parent !=
data_from_ancestor.transform_fixed_parent) {
@@ -150,18 +156,6 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
fixed_offset += parent_to_parent.To2dTranslation();
parent_offset += fixed_offset;
}
-
- gfx::Transform to_parent;
- Layer* source = data_from_ancestor.transform_tree_parent;
- if (layer->scroll_parent()) {
- source = layer->parent();
- parent_offset += layer->parent()->offset_to_transform_parent();
- }
- data_from_ancestor.transform_tree->ComputeTransform(
- source->transform_tree_index(),
- transform_parent->transform_tree_index(), &to_parent);
-
- parent_offset += to_parent.To2dTranslation();
}
if (layer->IsContainerForFixedPositionLayers() || is_root)
« no previous file with comments | « cc/trees/layer_tree_host_common_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698