OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 localQuad.boundingBox().center(), localQuad); | 777 localQuad.boundingBox().center(), localQuad); |
778 containingBlock->mapLocalToAncestor(scrollAncestor, transformState, | 778 containingBlock->mapLocalToAncestor(scrollAncestor, transformState, |
779 ApplyContainerFlip); | 779 ApplyContainerFlip); |
780 transformState.flatten(); | 780 transformState.flatten(); |
781 scrollContainerRelativePaddingBoxRect = | 781 scrollContainerRelativePaddingBoxRect = |
782 transformState.lastPlanarQuad().boundingBox(); | 782 transformState.lastPlanarQuad().boundingBox(); |
783 | 783 |
784 // The sticky position constraint rects should be independent of the current
scroll position, so after | 784 // The sticky position constraint rects should be independent of the current
scroll position, so after |
785 // mapping we add in the scroll position to get the container's position wit
hin the ancestor scroller's | 785 // mapping we add in the scroll position to get the container's position wit
hin the ancestor scroller's |
786 // unscrolled layout overflow. | 786 // unscrolled layout overflow. |
787 FloatSize scrollOffset( | 787 ScrollOffset scrollOffset( |
788 scrollAncestor | 788 scrollAncestor |
789 ? toFloatSize( | 789 ? toFloatSize(scrollAncestor->getScrollableArea()->scrollPosition()) |
790 scrollAncestor->getScrollableArea()->adjustedScrollOffset()) | |
791 : FloatSize()); | 790 : FloatSize()); |
792 scrollContainerRelativePaddingBoxRect.move(scrollOffset); | 791 scrollContainerRelativePaddingBoxRect.move(scrollOffset); |
793 } | 792 } |
794 | 793 |
795 LayoutRect scrollContainerRelativeContainingBlockRect( | 794 LayoutRect scrollContainerRelativeContainingBlockRect( |
796 scrollContainerRelativePaddingBoxRect); | 795 scrollContainerRelativePaddingBoxRect); |
797 // This is removing the padding of the containing block's overflow rect to get
the flow | 796 // This is removing the padding of the containing block's overflow rect to get
the flow |
798 // box rectangle and removing the margin of the sticky element to ensure that
space between | 797 // box rectangle and removing the margin of the sticky element to ensure that
space between |
799 // the sticky element and its containing flow box. It is an open issue whether
the margin | 798 // the sticky element and its containing flow box. It is an open issue whether
the margin |
800 // should collapse (See https://www.w3.org/TR/css-position-3/#sticky-pos). | 799 // should collapse (See https://www.w3.org/TR/css-position-3/#sticky-pos). |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
901 | 900 |
902 FloatRect LayoutBoxModelObject::computeStickyConstrainingRect() const { | 901 FloatRect LayoutBoxModelObject::computeStickyConstrainingRect() const { |
903 if (layer()->ancestorOverflowLayer()->isRootLayer()) | 902 if (layer()->ancestorOverflowLayer()->isRootLayer()) |
904 return view()->frameView()->visibleContentRect(); | 903 return view()->frameView()->visibleContentRect(); |
905 | 904 |
906 LayoutBox* enclosingClippingBox = | 905 LayoutBox* enclosingClippingBox = |
907 toLayoutBox(layer()->ancestorOverflowLayer()->layoutObject()); | 906 toLayoutBox(layer()->ancestorOverflowLayer()->layoutObject()); |
908 FloatRect constrainingRect; | 907 FloatRect constrainingRect; |
909 constrainingRect = | 908 constrainingRect = |
910 FloatRect(enclosingClippingBox->overflowClipRect(LayoutPoint(DoublePoint( | 909 FloatRect(enclosingClippingBox->overflowClipRect(LayoutPoint(DoublePoint( |
911 enclosingClippingBox->getScrollableArea()->adjustedScrollOffset())))); | 910 enclosingClippingBox->getScrollableArea()->scrollPosition())))); |
912 constrainingRect.move(enclosingClippingBox->paddingLeft(), | 911 constrainingRect.move(enclosingClippingBox->paddingLeft(), |
913 enclosingClippingBox->paddingTop()); | 912 enclosingClippingBox->paddingTop()); |
914 constrainingRect.contract( | 913 constrainingRect.contract( |
915 FloatSize(enclosingClippingBox->paddingLeft() + | 914 FloatSize(enclosingClippingBox->paddingLeft() + |
916 enclosingClippingBox->paddingRight(), | 915 enclosingClippingBox->paddingRight(), |
917 enclosingClippingBox->paddingTop() + | 916 enclosingClippingBox->paddingTop() + |
918 enclosingClippingBox->paddingBottom())); | 917 enclosingClippingBox->paddingBottom())); |
919 return constrainingRect; | 918 return constrainingRect; |
920 } | 919 } |
921 | 920 |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 if (rootElementStyle->hasBackground()) | 1327 if (rootElementStyle->hasBackground()) |
1329 return false; | 1328 return false; |
1330 | 1329 |
1331 if (node() != document().firstBodyElement()) | 1330 if (node() != document().firstBodyElement()) |
1332 return false; | 1331 return false; |
1333 | 1332 |
1334 return true; | 1333 return true; |
1335 } | 1334 } |
1336 | 1335 |
1337 } // namespace blink | 1336 } // namespace blink |
OLD | NEW |