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, 2010 Apple Inc. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. |
7 * All rights reserved. | 7 * All rights reserved. |
8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 markOrthogonalWritingModeRoot(); | 257 markOrthogonalWritingModeRoot(); |
258 else | 258 else |
259 unmarkOrthogonalWritingModeRoot(); | 259 unmarkOrthogonalWritingModeRoot(); |
260 } | 260 } |
261 | 261 |
262 clearPercentHeightDescendants(); | 262 clearPercentHeightDescendants(); |
263 } | 263 } |
264 | 264 |
265 // If our zoom factor changes and we have a defined scrollLeft/Top, we need to | 265 // If our zoom factor changes and we have a defined scrollLeft/Top, we need to |
266 // adjust that value into the new zoomed coordinate space. Note that the new | 266 // adjust that value into the new zoomed coordinate space. Note that the new |
267 // scroll position may be outside the normal min/max range of the scrollable | 267 // scroll offset may be outside the normal min/max range of the scrollable |
268 // area, which is weird but OK, because the scrollable area will update its | 268 // area, which is weird but OK, because the scrollable area will update its |
269 // min/max in updateAfterLayout(). | 269 // min/max in updateAfterLayout(). |
270 if (hasOverflowClip() && oldStyle && | 270 if (hasOverflowClip() && oldStyle && |
271 oldStyle->effectiveZoom() != newStyle.effectiveZoom()) { | 271 oldStyle->effectiveZoom() != newStyle.effectiveZoom()) { |
272 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); | 272 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); |
273 ASSERT(scrollableArea); | 273 ASSERT(scrollableArea); |
274 // We use scrollPosition() rather than adjustedScrollPosition(), because | 274 // We use scrollOffset() rather than scrollPosition(), because scrollOffset
is the distance |
275 // scrollPosition is the distance from the beginning of flow for the box, | 275 // from the beginning of flow for the box, which is the dimension we want to
preserve. |
276 // which is the dimension we want to preserve. | 276 ScrollOffset oldOffset = scrollableArea->scrollOffset(); |
277 DoublePoint oldPosition = scrollableArea->scrollPositionDouble(); | 277 if (oldOffset.width() || oldOffset.height()) { |
278 if (oldPosition.x() || oldPosition.y()) { | 278 ScrollOffset newOffset = oldOffset.scaledBy(newStyle.effectiveZoom() / |
279 DoublePoint newPosition = oldPosition.scaledBy(newStyle.effectiveZoom() / | 279 oldStyle->effectiveZoom()); |
280 oldStyle->effectiveZoom()); | 280 scrollableArea->setScrollOffsetUnconditionally(newOffset); |
281 scrollableArea->setScrollPositionUnconditionally(newPosition); | |
282 } | 281 } |
283 } | 282 } |
284 | 283 |
285 // Our opaqueness might have changed without triggering layout. | 284 // Our opaqueness might have changed without triggering layout. |
286 if (diff.needsPaintInvalidation()) { | 285 if (diff.needsPaintInvalidation()) { |
287 LayoutObject* parentToInvalidate = parent(); | 286 LayoutObject* parentToInvalidate = parent(); |
288 for (unsigned i = 0; | 287 for (unsigned i = 0; |
289 i < backgroundObscurationTestMaxDepth && parentToInvalidate; ++i) { | 288 i < backgroundObscurationTestMaxDepth && parentToInvalidate; ++i) { |
290 parentToInvalidate->invalidateBackgroundObscurationStatus(); | 289 parentToInvalidate->invalidateBackgroundObscurationStatus(); |
291 parentToInvalidate = parentToInvalidate->parent(); | 290 parentToInvalidate = parentToInvalidate->parent(); |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 LayoutUnit LayoutBox::scrollHeight() const { | 519 LayoutUnit LayoutBox::scrollHeight() const { |
521 if (hasOverflowClip()) | 520 if (hasOverflowClip()) |
522 return getScrollableArea()->scrollHeight(); | 521 return getScrollableArea()->scrollHeight(); |
523 // For objects with visible overflow, this matches IE. | 522 // For objects with visible overflow, this matches IE. |
524 // FIXME: Need to work right with writing modes. | 523 // FIXME: Need to work right with writing modes. |
525 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); | 524 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); |
526 } | 525 } |
527 | 526 |
528 LayoutUnit LayoutBox::scrollLeft() const { | 527 LayoutUnit LayoutBox::scrollLeft() const { |
529 return hasOverflowClip() | 528 return hasOverflowClip() |
530 ? LayoutUnit(getScrollableArea()->adjustedScrollOffset().width()) | 529 ? LayoutUnit(getScrollableArea()->scrollPosition().x()) |
531 : LayoutUnit(); | 530 : LayoutUnit(); |
532 } | 531 } |
533 | 532 |
534 LayoutUnit LayoutBox::scrollTop() const { | 533 LayoutUnit LayoutBox::scrollTop() const { |
535 return hasOverflowClip() | 534 return hasOverflowClip() |
536 ? LayoutUnit(getScrollableArea()->adjustedScrollOffset().height()) | 535 ? LayoutUnit(getScrollableArea()->scrollPosition().y()) |
537 : LayoutUnit(); | 536 : LayoutUnit(); |
538 } | 537 } |
539 | 538 |
540 int LayoutBox::pixelSnappedScrollWidth() const { | 539 int LayoutBox::pixelSnappedScrollWidth() const { |
541 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); | 540 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); |
542 } | 541 } |
543 | 542 |
544 int LayoutBox::pixelSnappedScrollHeight() const { | 543 int LayoutBox::pixelSnappedScrollHeight() const { |
545 if (hasOverflowClip()) | 544 if (hasOverflowClip()) |
546 return snapSizeToPixel(getScrollableArea()->scrollHeight(), | 545 return snapSizeToPixel(getScrollableArea()->scrollHeight(), |
547 location().y() + clientTop()); | 546 location().y() + clientTop()); |
548 // For objects with visible overflow, this matches IE. | 547 // For objects with visible overflow, this matches IE. |
549 // FIXME: Need to work right with writing modes. | 548 // FIXME: Need to work right with writing modes. |
550 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); | 549 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); |
551 } | 550 } |
552 | 551 |
553 void LayoutBox::setScrollLeft(LayoutUnit newLeft) { | 552 void LayoutBox::setScrollLeft(LayoutUnit newLeft) { |
554 // This doesn't hit in any tests, but since the equivalent code in | 553 // This doesn't hit in any tests, but since the equivalent code in |
555 // setScrollTop does, presumably this code does as well. | 554 // setScrollTop does, presumably this code does as well. |
556 DisableCompositingQueryAsserts disabler; | 555 DisableCompositingQueryAsserts disabler; |
557 | 556 |
558 if (hasOverflowClip()) { | 557 if (!hasOverflowClip()) |
559 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); | 558 return; |
560 scrollableArea->scrollToOffset( | 559 |
561 DoubleSize(newLeft, scrollableArea->adjustedScrollOffset().height()), | 560 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); |
562 ScrollBehaviorAuto); | 561 FloatPoint newPosition(newLeft.toFloat(), |
563 } | 562 scrollableArea->scrollPosition().y()); |
| 563 scrollableArea->scrollToAbsolutePosition(newPosition, ScrollBehaviorAuto); |
564 } | 564 } |
565 | 565 |
566 void LayoutBox::setScrollTop(LayoutUnit newTop) { | 566 void LayoutBox::setScrollTop(LayoutUnit newTop) { |
567 // Hits in | 567 // Hits in |
568 // compositing/overflow/do-not-assert-on-invisible-composited-layers.html | 568 // compositing/overflow/do-not-assert-on-invisible-composited-layers.html |
569 DisableCompositingQueryAsserts disabler; | 569 DisableCompositingQueryAsserts disabler; |
570 | 570 |
571 if (hasOverflowClip()) { | 571 if (!hasOverflowClip()) |
572 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); | 572 return; |
573 scrollableArea->scrollToOffset( | 573 |
574 DoubleSize(scrollableArea->adjustedScrollOffset().width(), newTop), | 574 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); |
575 ScrollBehaviorAuto); | 575 FloatPoint newPosition(scrollableArea->scrollPosition().x(), |
576 } | 576 newTop.toFloat()); |
| 577 scrollableArea->scrollToAbsolutePosition(newPosition, ScrollBehaviorAuto); |
577 } | 578 } |
578 | 579 |
579 void LayoutBox::scrollToOffset(const DoubleSize& offset, | 580 void LayoutBox::scrollToPosition(const FloatPoint& position, |
580 ScrollBehavior scrollBehavior) { | 581 ScrollBehavior scrollBehavior) { |
581 // This doesn't hit in any tests, but since the equivalent code in | 582 // This doesn't hit in any tests, but since the equivalent code in |
582 // setScrollTop does, presumably this code does as well. | 583 // setScrollTop does, presumably this code does as well. |
583 DisableCompositingQueryAsserts disabler; | 584 DisableCompositingQueryAsserts disabler; |
584 | 585 |
585 if (hasOverflowClip()) | 586 if (!hasOverflowClip()) |
586 getScrollableArea()->scrollToOffset(offset, scrollBehavior); | 587 return; |
| 588 |
| 589 getScrollableArea()->scrollToAbsolutePosition(position, scrollBehavior); |
587 } | 590 } |
588 | 591 |
589 // Returns true iff we are attempting an autoscroll inside an iframe with | 592 // Returns true iff we are attempting an autoscroll inside an iframe with |
590 // scrolling="no". | 593 // scrolling="no". |
591 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, | 594 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, |
592 FrameView* frameView) { | 595 FrameView* frameView) { |
593 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { | 596 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { |
594 HTMLFrameElementBase* frameElementBase = | 597 HTMLFrameElementBase* frameElementBase = |
595 toHTMLFrameElementBase(ownerElement); | 598 toHTMLFrameElementBase(ownerElement); |
596 if (Page* page = frameView->frame().page()) { | 599 if (Page* page = frameView->frame().page()) { |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1013 IntSize LayoutBox::calculateAutoscrollDirection( | 1016 IntSize LayoutBox::calculateAutoscrollDirection( |
1014 const IntPoint& pointInRootFrame) const { | 1017 const IntPoint& pointInRootFrame) const { |
1015 if (!frame()) | 1018 if (!frame()) |
1016 return IntSize(); | 1019 return IntSize(); |
1017 | 1020 |
1018 FrameView* frameView = frame()->view(); | 1021 FrameView* frameView = frame()->view(); |
1019 if (!frameView) | 1022 if (!frameView) |
1020 return IntSize(); | 1023 return IntSize(); |
1021 | 1024 |
1022 IntRect box(absoluteBoundingBoxRect()); | 1025 IntRect box(absoluteBoundingBoxRect()); |
1023 box.move(view()->frameView()->scrollOffset()); | 1026 box.move(view()->frameView()->scrollOffsetInt()); |
1024 IntRect windowBox = view()->frameView()->contentsToRootFrame(box); | 1027 IntRect windowBox = view()->frameView()->contentsToRootFrame(box); |
1025 | 1028 |
1026 IntPoint windowAutoscrollPoint = pointInRootFrame; | 1029 IntPoint windowAutoscrollPoint = pointInRootFrame; |
1027 | 1030 |
1028 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize) | 1031 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize) |
1029 windowAutoscrollPoint.move(-autoscrollBeltSize, 0); | 1032 windowAutoscrollPoint.move(-autoscrollBeltSize, 0); |
1030 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize) | 1033 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize) |
1031 windowAutoscrollPoint.move(autoscrollBeltSize, 0); | 1034 windowAutoscrollPoint.move(autoscrollBeltSize, 0); |
1032 | 1035 |
1033 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize) | 1036 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize) |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 | 1100 |
1098 // at the center we let the space for the icon. | 1101 // at the center we let the space for the icon. |
1099 if (abs(delta.width()) <= AutoscrollController::noMiddleClickAutoscrollRadius) | 1102 if (abs(delta.width()) <= AutoscrollController::noMiddleClickAutoscrollRadius) |
1100 delta.setWidth(0); | 1103 delta.setWidth(0); |
1101 if (abs(delta.height()) <= | 1104 if (abs(delta.height()) <= |
1102 AutoscrollController::noMiddleClickAutoscrollRadius) | 1105 AutoscrollController::noMiddleClickAutoscrollRadius) |
1103 delta.setHeight(0); | 1106 delta.setHeight(0); |
1104 scroll(ScrollByPixel, FloatSize(adjustedScrollDelta(delta))); | 1107 scroll(ScrollByPixel, FloatSize(adjustedScrollDelta(delta))); |
1105 } | 1108 } |
1106 | 1109 |
1107 void LayoutBox::scrollByRecursively(const DoubleSize& delta) { | 1110 void LayoutBox::scrollByRecursively(const ScrollOffset& delta) { |
1108 if (delta.isZero()) | 1111 if (delta.isZero()) |
1109 return; | 1112 return; |
1110 | 1113 |
1111 bool restrictedByLineClamp = false; | 1114 bool restrictedByLineClamp = false; |
1112 if (parent()) | 1115 if (parent()) |
1113 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); | 1116 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); |
1114 | 1117 |
1115 if (hasOverflowClip() && !restrictedByLineClamp) { | 1118 if (hasOverflowClip() && !restrictedByLineClamp) { |
1116 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); | 1119 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); |
1117 ASSERT(scrollableArea); | 1120 ASSERT(scrollableArea); |
1118 | 1121 |
1119 DoubleSize newScrollOffset = scrollableArea->adjustedScrollOffset() + delta; | 1122 ScrollOffset newScrollOffset = scrollableArea->scrollOffset() + delta; |
1120 scrollableArea->scrollToOffset(newScrollOffset); | 1123 scrollableArea->setScrollOffset(newScrollOffset, ProgrammaticScroll); |
1121 | 1124 |
1122 // If this layer can't do the scroll we ask the next layer up that can | 1125 // If this layer can't do the scroll we ask the next layer up that can |
1123 // scroll to try. | 1126 // scroll to try. |
1124 DoubleSize remainingScrollOffset = | 1127 ScrollOffset remainingScrollOffset = |
1125 newScrollOffset - scrollableArea->adjustedScrollOffset(); | 1128 newScrollOffset - scrollableArea->scrollOffset(); |
1126 if (!remainingScrollOffset.isZero() && parent()) { | 1129 if (!remainingScrollOffset.isZero() && parent()) { |
1127 if (LayoutBox* scrollableBox = enclosingScrollableBox()) | 1130 if (LayoutBox* scrollableBox = enclosingScrollableBox()) |
1128 scrollableBox->scrollByRecursively(remainingScrollOffset); | 1131 scrollableBox->scrollByRecursively(remainingScrollOffset); |
1129 | 1132 |
1130 LocalFrame* frame = this->frame(); | 1133 LocalFrame* frame = this->frame(); |
1131 if (frame && frame->page()) | 1134 if (frame && frame->page()) |
1132 frame->page()->autoscrollController().updateAutoscrollLayoutObject(); | 1135 frame->page()->autoscrollController().updateAutoscrollLayoutObject(); |
1133 } | 1136 } |
1134 } else if (view()->frameView()) { | 1137 } else if (view()->frameView()) { |
1135 // If we are here, we were called on a layoutObject that can be | 1138 // If we are here, we were called on a layoutObject that can be |
1136 // programmatically scrolled, but doesn't have an overflow clip. Which means | 1139 // programmatically scrolled, but doesn't have an overflow clip. Which means |
1137 // that it is a document node that can be scrolled. | 1140 // that it is a document node that can be scrolled. |
1138 // FIXME: Pass in DoubleSize. crbug.com/414283. | 1141 // FIXME: Pass in DoubleSize. crbug.com/414283. |
1139 view()->frameView()->scrollBy(flooredIntSize(delta), UserScroll); | 1142 view()->frameView()->scrollBy(delta, UserScroll); |
1140 | 1143 |
1141 // FIXME: If we didn't scroll the whole way, do we want to try looking at | 1144 // FIXME: If we didn't scroll the whole way, do we want to try looking at |
1142 // the frames ownerElement? | 1145 // the frames ownerElement? |
1143 // https://bugs.webkit.org/show_bug.cgi?id=28237 | 1146 // https://bugs.webkit.org/show_bug.cgi?id=28237 |
1144 } | 1147 } |
1145 } | 1148 } |
1146 | 1149 |
1147 bool LayoutBox::needsPreferredWidthsRecalculation() const { | 1150 bool LayoutBox::needsPreferredWidthsRecalculation() const { |
1148 return style()->paddingStart().isPercentOrCalc() || | 1151 return style()->paddingStart().isPercentOrCalc() || |
1149 style()->paddingEnd().isPercentOrCalc(); | 1152 style()->paddingEnd().isPercentOrCalc(); |
1150 } | 1153 } |
1151 | 1154 |
1152 IntSize LayoutBox::originAdjustmentForScrollbars() const { | 1155 IntSize LayoutBox::originAdjustmentForScrollbars() const { |
1153 IntSize size; | 1156 IntSize size; |
1154 int adjustmentWidth = verticalScrollbarWidth(); | 1157 int adjustmentWidth = verticalScrollbarWidth(); |
1155 if (hasFlippedBlocksWritingMode() || | 1158 if (hasFlippedBlocksWritingMode() || |
1156 (isHorizontalWritingMode() && | 1159 (isHorizontalWritingMode() && |
1157 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())) { | 1160 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())) { |
1158 size.expand(adjustmentWidth, 0); | 1161 size.expand(adjustmentWidth, 0); |
1159 } | 1162 } |
1160 return size; | 1163 return size; |
1161 } | 1164 } |
1162 | 1165 |
1163 IntSize LayoutBox::scrolledContentOffset() const { | 1166 IntSize LayoutBox::scrolledContentOffset() const { |
1164 ASSERT(hasOverflowClip()); | 1167 ASSERT(hasOverflowClip()); |
1165 ASSERT(hasLayer()); | 1168 ASSERT(hasLayer()); |
1166 // FIXME: Return DoubleSize here. crbug.com/414283. | 1169 // FIXME: Return DoubleSize here. crbug.com/414283. |
1167 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); | 1170 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); |
1168 IntSize result = flooredIntSize(scrollableArea->scrollOffset()) + | 1171 IntSize result = |
1169 originAdjustmentForScrollbars(); | 1172 scrollableArea->scrollOffsetInt() + originAdjustmentForScrollbars(); |
1170 if (isHorizontalWritingMode() && | 1173 if (isHorizontalWritingMode() && |
1171 shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) | 1174 shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) |
1172 result.expand(-verticalScrollbarWidth(), 0); | 1175 result.expand(-verticalScrollbarWidth(), 0); |
1173 return result; | 1176 return result; |
1174 } | 1177 } |
1175 | 1178 |
1176 LayoutRect LayoutBox::clippingRect() const { | 1179 LayoutRect LayoutBox::clippingRect() const { |
1177 LayoutRect result = LayoutRect(LayoutRect::infiniteIntRect()); | 1180 LayoutRect result = LayoutRect(LayoutRect::infiniteIntRect()); |
1178 if (hasOverflowClip() || style()->containsPaint()) | 1181 if (hasOverflowClip() || style()->containsPaint()) |
1179 result = overflowClipRect(LayoutPoint()); | 1182 result = overflowClipRect(LayoutPoint()); |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1758 } | 1761 } |
1759 | 1762 |
1760 bool LayoutBox::intersectsVisibleViewport() const { | 1763 bool LayoutBox::intersectsVisibleViewport() const { |
1761 LayoutRect rect = visualOverflowRect(); | 1764 LayoutRect rect = visualOverflowRect(); |
1762 LayoutView* layoutView = view(); | 1765 LayoutView* layoutView = view(); |
1763 while (!layoutView->frame()->ownerLayoutItem().isNull()) | 1766 while (!layoutView->frame()->ownerLayoutItem().isNull()) |
1764 layoutView = | 1767 layoutView = |
1765 LayoutAPIShim::layoutObjectFrom(layoutView->frame()->ownerLayoutItem()) | 1768 LayoutAPIShim::layoutObjectFrom(layoutView->frame()->ownerLayoutItem()) |
1766 ->view(); | 1769 ->view(); |
1767 mapToVisualRectInAncestorSpace(layoutView, rect); | 1770 mapToVisualRectInAncestorSpace(layoutView, rect); |
1768 return rect.intersects(LayoutRect(layoutView->frameView() | 1771 return rect.intersects(LayoutRect( |
1769 ->getScrollableArea() | 1772 layoutView->frameView()->getScrollableArea()->visibleContentRect())); |
1770 ->visibleContentRectDouble())); | |
1771 } | 1773 } |
1772 | 1774 |
1773 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded( | 1775 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded( |
1774 const PaintInvalidationState& paintInvalidationState) { | 1776 const PaintInvalidationState& paintInvalidationState) { |
1775 if (hasBoxDecorationBackground() | 1777 if (hasBoxDecorationBackground() |
1776 // We also paint overflow controls in background phase. | 1778 // We also paint overflow controls in background phase. |
1777 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) { | 1779 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) { |
1778 PaintLayer& layer = paintInvalidationState.paintingLayer(); | 1780 PaintLayer& layer = paintInvalidationState.paintingLayer(); |
1779 if (layer.layoutObject() != this) | 1781 if (layer.layoutObject() != this) |
1780 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); | 1782 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); |
(...skipping 3851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5632 LayoutRect rect = frameRect(); | 5634 LayoutRect rect = frameRect(); |
5633 | 5635 |
5634 LayoutBlock* block = containingBlock(); | 5636 LayoutBlock* block = containingBlock(); |
5635 if (block) | 5637 if (block) |
5636 block->adjustChildDebugRect(rect); | 5638 block->adjustChildDebugRect(rect); |
5637 | 5639 |
5638 return rect; | 5640 return rect; |
5639 } | 5641 } |
5640 | 5642 |
5641 } // namespace blink | 5643 } // namespace blink |
OLD | NEW |