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

Unified Diff: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp

Issue 2890583002: Fix incorrect use of coords conversion for sticky elements (Closed)
Patch Set: Created 3 years, 7 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
Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
index b938ccffbe207cb53c29ea507fcb973da2d904a8..17691563d39a802e21ae22ccbdeae4e6f042108f 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
@@ -315,8 +315,12 @@ void CompositedLayerMapping::UpdateStickyConstraints(
// The enclosing layers offset returned from |convertToLayerCoords| must be
// adjusted for both scroll and ancestor sticky elements.
LayoutPoint enclosing_layer_offset;
- compositing_container->ConvertToLayerCoords(ancestor_overflow_layer,
- enclosing_layer_offset);
+ bool is_descendant = false;
flackr 2017/05/17 19:44:03 Is this not equivalent to !ScrollParent()?
yigu 2017/05/17 20:28:15 No. is_descendant will be false if compositing_con
flackr 2017/05/18 15:54:08 Composite which ancestor? If you apply will-change
+ compositing_container->ConvertToLayerCoords(
+ ancestor_overflow_layer, enclosing_layer_offset, &is_descendant);
+ if (!is_descendant)
+ enclosing_layer_offset = LayoutPoint();
flackr 2017/05/17 19:44:03 How does the sticky element know where it is with
yigu 2017/05/17 20:28:15 When the compositing_container is a descendant of
flackr 2017/05/18 15:54:08 My concern is when the scroller is not at the top-
+
DCHECK(!ScrollParent() || ScrollParent() == ancestor_overflow_layer);
if (!ScrollParent() && compositing_container != ancestor_overflow_layer) {
enclosing_layer_offset += LayoutSize(

Powered by Google App Engine
This is Rietveld 408576698