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. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. 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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 markOrthogonalWritingModeRoot(); | 250 markOrthogonalWritingModeRoot(); |
251 else | 251 else |
252 unmarkOrthogonalWritingModeRoot(); | 252 unmarkOrthogonalWritingModeRoot(); |
253 } | 253 } |
254 | 254 |
255 clearPercentHeightDescendants(); | 255 clearPercentHeightDescendants(); |
256 } | 256 } |
257 | 257 |
258 // If our zoom factor changes and we have a defined scrollLeft/Top, we need to | 258 // If our zoom factor changes and we have a defined scrollLeft/Top, we need to |
259 // adjust that value into the new zoomed coordinate space. Note that the new | 259 // adjust that value into the new zoomed coordinate space. Note that the new |
260 // scroll position may be outside the normal min/max range of the scrollable | 260 // scroll offset may be outside the normal min/max range of the scrollable |
261 // area, which is weird but OK, because the scrollable area will update its | 261 // area, which is weird but OK, because the scrollable area will update its |
262 // min/max in updateAfterLayout(). | 262 // min/max in updateAfterLayout(). |
263 if (hasOverflowClip() && oldStyle && | 263 if (hasOverflowClip() && oldStyle && |
264 oldStyle->effectiveZoom() != newStyle.effectiveZoom()) { | 264 oldStyle->effectiveZoom() != newStyle.effectiveZoom()) { |
265 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); | 265 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); |
266 ASSERT(scrollableArea); | 266 ASSERT(scrollableArea); |
267 // We use scrollPosition() rather than adjustedScrollPosition(), because | 267 // We use scrollOffset() rather than scrollPosition(), because scrollOffset
is the distance |
268 // scrollPosition is the distance from the beginning of flow for the box, | 268 // from the beginning of flow for the box, which is the dimension we want to
preserve. |
269 // which is the dimension we want to preserve. | 269 ScrollOffset oldOffset = scrollableArea->scrollOffset(); |
270 DoublePoint oldPosition = scrollableArea->scrollPositionDouble(); | 270 if (oldOffset.width() || oldOffset.height()) { |
271 if (oldPosition.x() || oldPosition.y()) { | 271 ScrollOffset newOffset = oldOffset.scaledBy(newStyle.effectiveZoom() / |
272 DoublePoint newPosition = oldPosition.scaledBy(newStyle.effectiveZoom() / | 272 oldStyle->effectiveZoom()); |
273 oldStyle->effectiveZoom()); | 273 scrollableArea->setScrollOffsetUnconditionally(newOffset); |
274 scrollableArea->setScrollPositionUnconditionally(newPosition); | |
275 } | 274 } |
276 } | 275 } |
277 | 276 |
278 // Our opaqueness might have changed without triggering layout. | 277 // Our opaqueness might have changed without triggering layout. |
279 if (diff.needsPaintInvalidation()) { | 278 if (diff.needsPaintInvalidation()) { |
280 LayoutObject* parentToInvalidate = parent(); | 279 LayoutObject* parentToInvalidate = parent(); |
281 for (unsigned i = 0; | 280 for (unsigned i = 0; |
282 i < backgroundObscurationTestMaxDepth && parentToInvalidate; ++i) { | 281 i < backgroundObscurationTestMaxDepth && parentToInvalidate; ++i) { |
283 parentToInvalidate->invalidateBackgroundObscurationStatus(); | 282 parentToInvalidate->invalidateBackgroundObscurationStatus(); |
284 parentToInvalidate = parentToInvalidate->parent(); | 283 parentToInvalidate = parentToInvalidate->parent(); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 LayoutUnit LayoutBox::scrollHeight() const { | 509 LayoutUnit LayoutBox::scrollHeight() const { |
511 if (hasOverflowClip()) | 510 if (hasOverflowClip()) |
512 return getScrollableArea()->scrollHeight(); | 511 return getScrollableArea()->scrollHeight(); |
513 // For objects with visible overflow, this matches IE. | 512 // For objects with visible overflow, this matches IE. |
514 // FIXME: Need to work right with writing modes. | 513 // FIXME: Need to work right with writing modes. |
515 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); | 514 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); |
516 } | 515 } |
517 | 516 |
518 LayoutUnit LayoutBox::scrollLeft() const { | 517 LayoutUnit LayoutBox::scrollLeft() const { |
519 return hasOverflowClip() | 518 return hasOverflowClip() |
520 ? LayoutUnit(getScrollableArea()->adjustedScrollOffset().width()) | 519 ? LayoutUnit(getScrollableArea()->scrollPosition().x()) |
521 : LayoutUnit(); | 520 : LayoutUnit(); |
522 } | 521 } |
523 | 522 |
524 LayoutUnit LayoutBox::scrollTop() const { | 523 LayoutUnit LayoutBox::scrollTop() const { |
525 return hasOverflowClip() | 524 return hasOverflowClip() |
526 ? LayoutUnit(getScrollableArea()->adjustedScrollOffset().height()) | 525 ? LayoutUnit(getScrollableArea()->scrollPosition().y()) |
527 : LayoutUnit(); | 526 : LayoutUnit(); |
528 } | 527 } |
529 | 528 |
530 int LayoutBox::pixelSnappedScrollWidth() const { | 529 int LayoutBox::pixelSnappedScrollWidth() const { |
531 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); | 530 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); |
532 } | 531 } |
533 | 532 |
534 int LayoutBox::pixelSnappedScrollHeight() const { | 533 int LayoutBox::pixelSnappedScrollHeight() const { |
535 if (hasOverflowClip()) | 534 if (hasOverflowClip()) |
536 return snapSizeToPixel(getScrollableArea()->scrollHeight(), | 535 return snapSizeToPixel(getScrollableArea()->scrollHeight(), |
537 location().y() + clientTop()); | 536 location().y() + clientTop()); |
538 // For objects with visible overflow, this matches IE. | 537 // For objects with visible overflow, this matches IE. |
539 // FIXME: Need to work right with writing modes. | 538 // FIXME: Need to work right with writing modes. |
540 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); | 539 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); |
541 } | 540 } |
542 | 541 |
543 void LayoutBox::setScrollLeft(LayoutUnit newLeft) { | 542 void LayoutBox::setScrollLeft(LayoutUnit newLeft) { |
544 // This doesn't hit in any tests, but since the equivalent code in setScrollTo
p | 543 // This doesn't hit in any tests, but since the equivalent code in setScrollTo
p |
545 // does, presumably this code does as well. | 544 // does, presumably this code does as well. |
546 DisableCompositingQueryAsserts disabler; | 545 DisableCompositingQueryAsserts disabler; |
547 | 546 |
548 if (hasOverflowClip()) { | 547 if (!hasOverflowClip()) |
549 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); | 548 return; |
550 scrollableArea->scrollToOffset( | 549 |
551 DoubleSize(newLeft, scrollableArea->adjustedScrollOffset().height()), | 550 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); |
552 ScrollBehaviorAuto); | 551 FloatPoint newPosition(newLeft.toFloat(), |
553 } | 552 scrollableArea->scrollPosition().y()); |
| 553 scrollableArea->scrollToAbsolutePosition(newPosition, ScrollBehaviorAuto); |
554 } | 554 } |
555 | 555 |
556 void LayoutBox::setScrollTop(LayoutUnit newTop) { | 556 void LayoutBox::setScrollTop(LayoutUnit newTop) { |
557 // Hits in compositing/overflow/do-not-assert-on-invisible-composited-layers.h
tml | 557 // Hits in compositing/overflow/do-not-assert-on-invisible-composited-layers.h
tml |
558 DisableCompositingQueryAsserts disabler; | 558 DisableCompositingQueryAsserts disabler; |
559 | 559 |
560 if (hasOverflowClip()) { | 560 if (!hasOverflowClip()) |
561 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); | 561 return; |
562 scrollableArea->scrollToOffset( | 562 |
563 DoubleSize(scrollableArea->adjustedScrollOffset().width(), newTop), | 563 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); |
564 ScrollBehaviorAuto); | 564 FloatPoint newPosition(scrollableArea->scrollPosition().x(), |
565 } | 565 newTop.toFloat()); |
| 566 scrollableArea->scrollToAbsolutePosition(newPosition, ScrollBehaviorAuto); |
566 } | 567 } |
567 | 568 |
568 void LayoutBox::scrollToOffset(const DoubleSize& offset, | 569 void LayoutBox::scrollToPosition(const FloatPoint& position, |
569 ScrollBehavior scrollBehavior) { | 570 ScrollBehavior scrollBehavior) { |
570 // This doesn't hit in any tests, but since the equivalent code in setScrollTo
p | 571 // This doesn't hit in any tests, but since the equivalent code in setScrollTo
p |
571 // does, presumably this code does as well. | 572 // does, presumably this code does as well. |
572 DisableCompositingQueryAsserts disabler; | 573 DisableCompositingQueryAsserts disabler; |
573 | 574 |
574 if (hasOverflowClip()) | 575 if (!hasOverflowClip()) |
575 getScrollableArea()->scrollToOffset(offset, scrollBehavior); | 576 return; |
| 577 |
| 578 getScrollableArea()->scrollToAbsolutePosition(position, scrollBehavior); |
576 } | 579 } |
577 | 580 |
578 // Returns true iff we are attempting an autoscroll inside an iframe with scroll
ing="no". | 581 // Returns true iff we are attempting an autoscroll inside an iframe with scroll
ing="no". |
579 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, | 582 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, |
580 FrameView* frameView) { | 583 FrameView* frameView) { |
581 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { | 584 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { |
582 HTMLFrameElementBase* frameElementBase = | 585 HTMLFrameElementBase* frameElementBase = |
583 toHTMLFrameElementBase(ownerElement); | 586 toHTMLFrameElementBase(ownerElement); |
584 if (Page* page = frameView->frame().page()) { | 587 if (Page* page = frameView->frame().page()) { |
585 return page->autoscrollController().autoscrollInProgress() && | 588 return page->autoscrollController().autoscrollInProgress() && |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
996 IntSize LayoutBox::calculateAutoscrollDirection( | 999 IntSize LayoutBox::calculateAutoscrollDirection( |
997 const IntPoint& pointInRootFrame) const { | 1000 const IntPoint& pointInRootFrame) const { |
998 if (!frame()) | 1001 if (!frame()) |
999 return IntSize(); | 1002 return IntSize(); |
1000 | 1003 |
1001 FrameView* frameView = frame()->view(); | 1004 FrameView* frameView = frame()->view(); |
1002 if (!frameView) | 1005 if (!frameView) |
1003 return IntSize(); | 1006 return IntSize(); |
1004 | 1007 |
1005 IntRect box(absoluteBoundingBoxRect()); | 1008 IntRect box(absoluteBoundingBoxRect()); |
1006 box.move(view()->frameView()->scrollOffset()); | 1009 box.move(view()->frameView()->scrollOffsetInt()); |
1007 IntRect windowBox = view()->frameView()->contentsToRootFrame(box); | 1010 IntRect windowBox = view()->frameView()->contentsToRootFrame(box); |
1008 | 1011 |
1009 IntPoint windowAutoscrollPoint = pointInRootFrame; | 1012 IntPoint windowAutoscrollPoint = pointInRootFrame; |
1010 | 1013 |
1011 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize) | 1014 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize) |
1012 windowAutoscrollPoint.move(-autoscrollBeltSize, 0); | 1015 windowAutoscrollPoint.move(-autoscrollBeltSize, 0); |
1013 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize) | 1016 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize) |
1014 windowAutoscrollPoint.move(autoscrollBeltSize, 0); | 1017 windowAutoscrollPoint.move(autoscrollBeltSize, 0); |
1015 | 1018 |
1016 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize) | 1019 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize) |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1080 if (abs(delta.width()) <= | 1083 if (abs(delta.width()) <= |
1081 AutoscrollController:: | 1084 AutoscrollController:: |
1082 noMiddleClickAutoscrollRadius) // at the center we let the space for
the icon | 1085 noMiddleClickAutoscrollRadius) // at the center we let the space for
the icon |
1083 delta.setWidth(0); | 1086 delta.setWidth(0); |
1084 if (abs(delta.height()) <= | 1087 if (abs(delta.height()) <= |
1085 AutoscrollController::noMiddleClickAutoscrollRadius) | 1088 AutoscrollController::noMiddleClickAutoscrollRadius) |
1086 delta.setHeight(0); | 1089 delta.setHeight(0); |
1087 scroll(ScrollByPixel, FloatSize(adjustedScrollDelta(delta))); | 1090 scroll(ScrollByPixel, FloatSize(adjustedScrollDelta(delta))); |
1088 } | 1091 } |
1089 | 1092 |
1090 void LayoutBox::scrollByRecursively(const DoubleSize& delta) { | 1093 void LayoutBox::scrollByRecursively(const ScrollOffset& delta) { |
1091 if (delta.isZero()) | 1094 if (delta.isZero()) |
1092 return; | 1095 return; |
1093 | 1096 |
1094 bool restrictedByLineClamp = false; | 1097 bool restrictedByLineClamp = false; |
1095 if (parent()) | 1098 if (parent()) |
1096 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); | 1099 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); |
1097 | 1100 |
1098 if (hasOverflowClip() && !restrictedByLineClamp) { | 1101 if (hasOverflowClip() && !restrictedByLineClamp) { |
1099 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); | 1102 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); |
1100 ASSERT(scrollableArea); | 1103 ASSERT(scrollableArea); |
1101 | 1104 |
1102 DoubleSize newScrollOffset = scrollableArea->adjustedScrollOffset() + delta; | 1105 ScrollOffset newScrollOffset = scrollableArea->scrollOffset() + delta; |
1103 scrollableArea->scrollToOffset(newScrollOffset); | 1106 scrollableArea->setScrollOffset(newScrollOffset, ProgrammaticScroll); |
1104 | 1107 |
1105 // If this layer can't do the scroll we ask the next layer up that can scrol
l to try | 1108 // If this layer can't do the scroll we ask the next layer up that can |
1106 DoubleSize remainingScrollOffset = | 1109 // scroll to try. |
1107 newScrollOffset - scrollableArea->adjustedScrollOffset(); | 1110 ScrollOffset remainingScrollOffset = |
| 1111 newScrollOffset - scrollableArea->scrollOffset(); |
1108 if (!remainingScrollOffset.isZero() && parent()) { | 1112 if (!remainingScrollOffset.isZero() && parent()) { |
1109 if (LayoutBox* scrollableBox = enclosingScrollableBox()) | 1113 if (LayoutBox* scrollableBox = enclosingScrollableBox()) |
1110 scrollableBox->scrollByRecursively(remainingScrollOffset); | 1114 scrollableBox->scrollByRecursively(remainingScrollOffset); |
1111 | 1115 |
1112 LocalFrame* frame = this->frame(); | 1116 LocalFrame* frame = this->frame(); |
1113 if (frame && frame->page()) | 1117 if (frame && frame->page()) |
1114 frame->page()->autoscrollController().updateAutoscrollLayoutObject(); | 1118 frame->page()->autoscrollController().updateAutoscrollLayoutObject(); |
1115 } | 1119 } |
1116 } else if (view()->frameView()) { | 1120 } else if (view()->frameView()) { |
1117 // If we are here, we were called on a layoutObject that can be programmatic
ally scrolled, but doesn't | 1121 // If we are here, we were called on a layoutObject that can be programmatic
ally scrolled, but doesn't |
1118 // have an overflow clip. Which means that it is a document node that can be
scrolled. | 1122 // have an overflow clip. Which means that it is a document node that can be
scrolled. |
1119 // FIXME: Pass in DoubleSize. crbug.com/414283. | 1123 // FIXME: Pass in DoubleSize. crbug.com/414283. |
1120 view()->frameView()->scrollBy(flooredIntSize(delta), UserScroll); | 1124 view()->frameView()->scrollBy(delta, UserScroll); |
1121 | 1125 |
1122 // FIXME: If we didn't scroll the whole way, do we want to try looking at th
e frames ownerElement? | 1126 // FIXME: If we didn't scroll the whole way, do we want to try looking at th
e frames ownerElement? |
1123 // https://bugs.webkit.org/show_bug.cgi?id=28237 | 1127 // https://bugs.webkit.org/show_bug.cgi?id=28237 |
1124 } | 1128 } |
1125 } | 1129 } |
1126 | 1130 |
1127 bool LayoutBox::needsPreferredWidthsRecalculation() const { | 1131 bool LayoutBox::needsPreferredWidthsRecalculation() const { |
1128 return style()->paddingStart().isPercentOrCalc() || | 1132 return style()->paddingStart().isPercentOrCalc() || |
1129 style()->paddingEnd().isPercentOrCalc(); | 1133 style()->paddingEnd().isPercentOrCalc(); |
1130 } | 1134 } |
1131 | 1135 |
1132 IntSize LayoutBox::originAdjustmentForScrollbars() const { | 1136 IntSize LayoutBox::originAdjustmentForScrollbars() const { |
1133 IntSize size; | 1137 IntSize size; |
1134 int adjustmentWidth = verticalScrollbarWidth(); | 1138 int adjustmentWidth = verticalScrollbarWidth(); |
1135 if (hasFlippedBlocksWritingMode() || | 1139 if (hasFlippedBlocksWritingMode() || |
1136 (isHorizontalWritingMode() && | 1140 (isHorizontalWritingMode() && |
1137 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())) { | 1141 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())) { |
1138 size.expand(adjustmentWidth, 0); | 1142 size.expand(adjustmentWidth, 0); |
1139 } | 1143 } |
1140 return size; | 1144 return size; |
1141 } | 1145 } |
1142 | 1146 |
1143 IntSize LayoutBox::scrolledContentOffset() const { | 1147 IntSize LayoutBox::scrolledContentOffset() const { |
1144 ASSERT(hasOverflowClip()); | 1148 ASSERT(hasOverflowClip()); |
1145 ASSERT(hasLayer()); | 1149 ASSERT(hasLayer()); |
1146 // FIXME: Return DoubleSize here. crbug.com/414283. | 1150 // FIXME: Return DoubleSize here. crbug.com/414283. |
1147 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); | 1151 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); |
1148 IntSize result = flooredIntSize(scrollableArea->scrollOffset()) + | 1152 IntSize result = |
1149 originAdjustmentForScrollbars(); | 1153 scrollableArea->scrollOffsetInt() + originAdjustmentForScrollbars(); |
1150 if (isHorizontalWritingMode() && | 1154 if (isHorizontalWritingMode() && |
1151 shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) | 1155 shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) |
1152 result.expand(-verticalScrollbarWidth(), 0); | 1156 result.expand(-verticalScrollbarWidth(), 0); |
1153 return result; | 1157 return result; |
1154 } | 1158 } |
1155 | 1159 |
1156 LayoutRect LayoutBox::clippingRect() const { | 1160 LayoutRect LayoutBox::clippingRect() const { |
1157 LayoutRect result = LayoutRect(LayoutRect::infiniteIntRect()); | 1161 LayoutRect result = LayoutRect(LayoutRect::infiniteIntRect()); |
1158 if (hasOverflowClip() || style()->containsPaint()) | 1162 if (hasOverflowClip() || style()->containsPaint()) |
1159 result = overflowClipRect(LayoutPoint()); | 1163 result = overflowClipRect(LayoutPoint()); |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1726 } | 1730 } |
1727 | 1731 |
1728 bool LayoutBox::intersectsVisibleViewport() const { | 1732 bool LayoutBox::intersectsVisibleViewport() const { |
1729 LayoutRect rect = visualOverflowRect(); | 1733 LayoutRect rect = visualOverflowRect(); |
1730 LayoutView* layoutView = view(); | 1734 LayoutView* layoutView = view(); |
1731 while (!layoutView->frame()->ownerLayoutItem().isNull()) | 1735 while (!layoutView->frame()->ownerLayoutItem().isNull()) |
1732 layoutView = | 1736 layoutView = |
1733 LayoutAPIShim::layoutObjectFrom(layoutView->frame()->ownerLayoutItem()) | 1737 LayoutAPIShim::layoutObjectFrom(layoutView->frame()->ownerLayoutItem()) |
1734 ->view(); | 1738 ->view(); |
1735 mapToVisualRectInAncestorSpace(layoutView, rect); | 1739 mapToVisualRectInAncestorSpace(layoutView, rect); |
1736 return rect.intersects(LayoutRect(layoutView->frameView() | 1740 return rect.intersects(LayoutRect( |
1737 ->getScrollableArea() | 1741 layoutView->frameView()->getScrollableArea()->visibleContentRect())); |
1738 ->visibleContentRectDouble())); | |
1739 } | 1742 } |
1740 | 1743 |
1741 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded( | 1744 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded( |
1742 const PaintInvalidationState& paintInvalidationState) { | 1745 const PaintInvalidationState& paintInvalidationState) { |
1743 if (hasBoxDecorationBackground() | 1746 if (hasBoxDecorationBackground() |
1744 // We also paint overflow controls in background phase. | 1747 // We also paint overflow controls in background phase. |
1745 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) { | 1748 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) { |
1746 PaintLayer& layer = paintInvalidationState.paintingLayer(); | 1749 PaintLayer& layer = paintInvalidationState.paintingLayer(); |
1747 if (layer.layoutObject() != this) | 1750 if (layer.layoutObject() != this) |
1748 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); | 1751 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); |
(...skipping 3738 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5487 LayoutRect rect = frameRect(); | 5490 LayoutRect rect = frameRect(); |
5488 | 5491 |
5489 LayoutBlock* block = containingBlock(); | 5492 LayoutBlock* block = containingBlock(); |
5490 if (block) | 5493 if (block) |
5491 block->adjustChildDebugRect(rect); | 5494 block->adjustChildDebugRect(rect); |
5492 | 5495 |
5493 return rect; | 5496 return rect; |
5494 } | 5497 } |
5495 | 5498 |
5496 } // namespace blink | 5499 } // namespace blink |
OLD | NEW |