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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutBox.cpp

Issue 2387883002: Use float for scroll offset. (Closed)
Patch Set: Fix README.md Created 4 years, 2 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 unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBox.h ('k') | third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698