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 238 matching lines...) Loading... |
249 else | 249 else |
250 unmarkOrthogonalWritingModeRoot(); | 250 unmarkOrthogonalWritingModeRoot(); |
251 } | 251 } |
252 | 252 |
253 clearPercentHeightDescendants(); | 253 clearPercentHeightDescendants(); |
254 } | 254 } |
255 | 255 |
256 // If our zoom factor changes and we have a defined scrollLeft/Top, we need
to adjust that value into the | 256 // If our zoom factor changes and we have a defined scrollLeft/Top, we need
to adjust that value into the |
257 // new zoomed coordinate space. | 257 // new zoomed coordinate space. |
258 if (hasOverflowClip() && oldStyle && oldStyle->effectiveZoom() != newStyle.e
ffectiveZoom()) { | 258 if (hasOverflowClip() && oldStyle && oldStyle->effectiveZoom() != newStyle.e
ffectiveZoom()) { |
259 PaintLayerScrollableArea* scrollableArea = this->scrollableArea(); | 259 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); |
260 ASSERT(scrollableArea); | 260 ASSERT(scrollableArea); |
261 if (int left = scrollableArea->scrollXOffset()) { | 261 if (int left = scrollableArea->scrollXOffset()) { |
262 left = (left / oldStyle->effectiveZoom()) * newStyle.effectiveZoom()
; | 262 left = (left / oldStyle->effectiveZoom()) * newStyle.effectiveZoom()
; |
263 scrollableArea->scrollToXOffset(left); | 263 scrollableArea->scrollToXOffset(left); |
264 } | 264 } |
265 if (int top = scrollableArea->scrollYOffset()) { | 265 if (int top = scrollableArea->scrollYOffset()) { |
266 top = (top / oldStyle->effectiveZoom()) * newStyle.effectiveZoom(); | 266 top = (top / oldStyle->effectiveZoom()) * newStyle.effectiveZoom(); |
267 scrollableArea->scrollToYOffset(top); | 267 scrollableArea->scrollToYOffset(top); |
268 } | 268 } |
269 } | 269 } |
270 | 270 |
271 // Our opaqueness might have changed without triggering layout. | 271 // Our opaqueness might have changed without triggering layout. |
272 if (diff.needsPaintInvalidation()) { | 272 if (diff.needsPaintInvalidation()) { |
273 LayoutObject* parentToInvalidate = parent(); | 273 LayoutObject* parentToInvalidate = parent(); |
274 for (unsigned i = 0; i < backgroundObscurationTestMaxDepth && parentToIn
validate; ++i) { | 274 for (unsigned i = 0; i < backgroundObscurationTestMaxDepth && parentToIn
validate; ++i) { |
275 parentToInvalidate->invalidateBackgroundObscurationStatus(); | 275 parentToInvalidate->invalidateBackgroundObscurationStatus(); |
276 parentToInvalidate = parentToInvalidate->parent(); | 276 parentToInvalidate = parentToInvalidate->parent(); |
277 } | 277 } |
278 } | 278 } |
279 | 279 |
280 if (isDocumentElement() || isBody()) { | 280 if (isDocumentElement() || isBody()) { |
281 document().view()->recalculateScrollbarOverlayStyle(document().view()->d
ocumentBackgroundColor()); | 281 document().view()->recalculateScrollbarOverlayStyle(document().view()->d
ocumentBackgroundColor()); |
282 document().view()->recalculateCustomScrollbarStyle(); | 282 document().view()->recalculateCustomScrollbarStyle(); |
283 if (LayoutView* layoutView = view()) { | 283 if (LayoutView* layoutView = view()) { |
284 if (PaintLayerScrollableArea* scrollableArea = layoutView->scrollabl
eArea()) { | 284 if (PaintLayerScrollableArea* scrollableArea = layoutView->getScroll
ableArea()) { |
285 if (scrollableArea->horizontalScrollbar() && scrollableArea->hor
izontalScrollbar()->isCustomScrollbar()) | 285 if (scrollableArea->horizontalScrollbar() && scrollableArea->hor
izontalScrollbar()->isCustomScrollbar()) |
286 scrollableArea->horizontalScrollbar()->styleChanged(); | 286 scrollableArea->horizontalScrollbar()->styleChanged(); |
287 if (scrollableArea->verticalScrollbar() && scrollableArea->verti
calScrollbar()->isCustomScrollbar()) | 287 if (scrollableArea->verticalScrollbar() && scrollableArea->verti
calScrollbar()->isCustomScrollbar()) |
288 scrollableArea->verticalScrollbar()->styleChanged(); | 288 scrollableArea->verticalScrollbar()->styleChanged(); |
289 } | 289 } |
290 } | 290 } |
291 } | 291 } |
292 updateShapeOutsideInfoAfterStyleChange(*style(), oldStyle); | 292 updateShapeOutsideInfoAfterStyleChange(*style(), oldStyle); |
293 updateGridPositionAfterStyleChange(oldStyle); | 293 updateGridPositionAfterStyleChange(oldStyle); |
294 | 294 |
(...skipping 137 matching lines...) Loading... |
432 } | 432 } |
433 | 433 |
434 int LayoutBox::pixelSnappedOffsetHeight() const | 434 int LayoutBox::pixelSnappedOffsetHeight() const |
435 { | 435 { |
436 return snapSizeToPixel(offsetHeight(), location().y() + clientTop()); | 436 return snapSizeToPixel(offsetHeight(), location().y() + clientTop()); |
437 } | 437 } |
438 | 438 |
439 LayoutUnit LayoutBox::scrollWidth() const | 439 LayoutUnit LayoutBox::scrollWidth() const |
440 { | 440 { |
441 if (hasOverflowClip()) | 441 if (hasOverflowClip()) |
442 return scrollableArea()->scrollWidth(); | 442 return getScrollableArea()->scrollWidth(); |
443 // For objects with visible overflow, this matches IE. | 443 // For objects with visible overflow, this matches IE. |
444 // FIXME: Need to work right with writing modes. | 444 // FIXME: Need to work right with writing modes. |
445 if (style()->isLeftToRightDirection()) | 445 if (style()->isLeftToRightDirection()) |
446 return std::max(clientWidth(), layoutOverflowRect().maxX() - borderLeft(
)); | 446 return std::max(clientWidth(), layoutOverflowRect().maxX() - borderLeft(
)); |
447 return clientWidth() - std::min(LayoutUnit(), layoutOverflowRect().x() - bor
derLeft()); | 447 return clientWidth() - std::min(LayoutUnit(), layoutOverflowRect().x() - bor
derLeft()); |
448 } | 448 } |
449 | 449 |
450 LayoutUnit LayoutBox::scrollHeight() const | 450 LayoutUnit LayoutBox::scrollHeight() const |
451 { | 451 { |
452 if (hasOverflowClip()) | 452 if (hasOverflowClip()) |
453 return scrollableArea()->scrollHeight(); | 453 return getScrollableArea()->scrollHeight(); |
454 // For objects with visible overflow, this matches IE. | 454 // For objects with visible overflow, this matches IE. |
455 // FIXME: Need to work right with writing modes. | 455 // FIXME: Need to work right with writing modes. |
456 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); | 456 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); |
457 } | 457 } |
458 | 458 |
459 LayoutUnit LayoutBox::scrollLeft() const | 459 LayoutUnit LayoutBox::scrollLeft() const |
460 { | 460 { |
461 return hasOverflowClip() ? LayoutUnit(scrollableArea()->scrollXOffset()) : L
ayoutUnit(); | 461 return hasOverflowClip() ? LayoutUnit(getScrollableArea()->scrollXOffset())
: LayoutUnit(); |
462 } | 462 } |
463 | 463 |
464 LayoutUnit LayoutBox::scrollTop() const | 464 LayoutUnit LayoutBox::scrollTop() const |
465 { | 465 { |
466 return hasOverflowClip() ? LayoutUnit(scrollableArea()->scrollYOffset()) : L
ayoutUnit(); | 466 return hasOverflowClip() ? LayoutUnit(getScrollableArea()->scrollYOffset())
: LayoutUnit(); |
467 } | 467 } |
468 | 468 |
469 int LayoutBox::pixelSnappedScrollWidth() const | 469 int LayoutBox::pixelSnappedScrollWidth() const |
470 { | 470 { |
471 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); | 471 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); |
472 } | 472 } |
473 | 473 |
474 int LayoutBox::pixelSnappedScrollHeight() const | 474 int LayoutBox::pixelSnappedScrollHeight() const |
475 { | 475 { |
476 if (hasOverflowClip()) | 476 if (hasOverflowClip()) |
477 return snapSizeToPixel(scrollableArea()->scrollHeight(), location().y()
+ clientTop()); | 477 return snapSizeToPixel(getScrollableArea()->scrollHeight(), location().y
() + clientTop()); |
478 // For objects with visible overflow, this matches IE. | 478 // For objects with visible overflow, this matches IE. |
479 // FIXME: Need to work right with writing modes. | 479 // FIXME: Need to work right with writing modes. |
480 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); | 480 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); |
481 } | 481 } |
482 | 482 |
483 void LayoutBox::setScrollLeft(LayoutUnit newLeft) | 483 void LayoutBox::setScrollLeft(LayoutUnit newLeft) |
484 { | 484 { |
485 // This doesn't hit in any tests, but since the equivalent code in setScroll
Top | 485 // This doesn't hit in any tests, but since the equivalent code in setScroll
Top |
486 // does, presumably this code does as well. | 486 // does, presumably this code does as well. |
487 DisableCompositingQueryAsserts disabler; | 487 DisableCompositingQueryAsserts disabler; |
488 | 488 |
489 if (hasOverflowClip()) | 489 if (hasOverflowClip()) |
490 scrollableArea()->scrollToXOffset(newLeft, ScrollOffsetClamped, ScrollBe
haviorAuto); | 490 getScrollableArea()->scrollToXOffset(newLeft, ScrollOffsetClamped, Scrol
lBehaviorAuto); |
491 } | 491 } |
492 | 492 |
493 void LayoutBox::setScrollTop(LayoutUnit newTop) | 493 void LayoutBox::setScrollTop(LayoutUnit newTop) |
494 { | 494 { |
495 // Hits in compositing/overflow/do-not-assert-on-invisible-composited-layers
.html | 495 // Hits in compositing/overflow/do-not-assert-on-invisible-composited-layers
.html |
496 DisableCompositingQueryAsserts disabler; | 496 DisableCompositingQueryAsserts disabler; |
497 | 497 |
498 if (hasOverflowClip()) | 498 if (hasOverflowClip()) |
499 scrollableArea()->scrollToYOffset(newTop, ScrollOffsetClamped, ScrollBeh
aviorAuto); | 499 getScrollableArea()->scrollToYOffset(newTop, ScrollOffsetClamped, Scroll
BehaviorAuto); |
500 } | 500 } |
501 | 501 |
502 void LayoutBox::scrollToOffset(const DoubleSize& offset, ScrollBehavior scrollBe
havior) | 502 void LayoutBox::scrollToOffset(const DoubleSize& offset, ScrollBehavior scrollBe
havior) |
503 { | 503 { |
504 // This doesn't hit in any tests, but since the equivalent code in setScroll
Top | 504 // This doesn't hit in any tests, but since the equivalent code in setScroll
Top |
505 // does, presumably this code does as well. | 505 // does, presumably this code does as well. |
506 DisableCompositingQueryAsserts disabler; | 506 DisableCompositingQueryAsserts disabler; |
507 | 507 |
508 if (hasOverflowClip()) | 508 if (hasOverflowClip()) |
509 scrollableArea()->scrollToOffset(offset, ScrollOffsetClamped, scrollBeha
vior); | 509 getScrollableArea()->scrollToOffset(offset, ScrollOffsetClamped, scrollB
ehavior); |
510 } | 510 } |
511 | 511 |
512 // Returns true iff we are attempting an autoscroll inside an iframe with scroll
ing="no". | 512 // Returns true iff we are attempting an autoscroll inside an iframe with scroll
ing="no". |
513 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, FrameVie
w* frameView) | 513 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, FrameVie
w* frameView) |
514 { | 514 { |
515 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { | 515 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { |
516 HTMLFrameElementBase* frameElementBase = toHTMLFrameElementBase(ownerEle
ment); | 516 HTMLFrameElementBase* frameElementBase = toHTMLFrameElementBase(ownerEle
ment); |
517 if (Page* page = frameView->frame().page()) { | 517 if (Page* page = frameView->frame().page()) { |
518 return page->autoscrollController().autoscrollInProgress() | 518 return page->autoscrollController().autoscrollInProgress() |
519 && frameElementBase->scrollingMode() == ScrollbarAlwaysOff; | 519 && frameElementBase->scrollingMode() == ScrollbarAlwaysOff; |
(...skipping 13 matching lines...) Loading... |
533 | 533 |
534 bool restrictedByLineClamp = false; | 534 bool restrictedByLineClamp = false; |
535 if (parent()) { | 535 if (parent()) { |
536 parentBox = parent()->enclosingBox(); | 536 parentBox = parent()->enclosingBox(); |
537 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); | 537 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); |
538 } | 538 } |
539 | 539 |
540 if (hasOverflowClip() && !restrictedByLineClamp) { | 540 if (hasOverflowClip() && !restrictedByLineClamp) { |
541 // Don't scroll to reveal an overflow layer that is restricted by the -w
ebkit-line-clamp property. | 541 // Don't scroll to reveal an overflow layer that is restricted by the -w
ebkit-line-clamp property. |
542 // This will prevent us from revealing text hidden by the slider in Safa
ri RSS. | 542 // This will prevent us from revealing text hidden by the slider in Safa
ri RSS. |
543 newRect = scrollableArea()->scrollIntoView(rect, alignX, alignY, scrollT
ype); | 543 newRect = getScrollableArea()->scrollIntoView(rect, alignX, alignY, scro
llType); |
544 } else if (!parentBox && canBeProgramaticallyScrolled()) { | 544 } else if (!parentBox && canBeProgramaticallyScrolled()) { |
545 if (FrameView* frameView = this->frameView()) { | 545 if (FrameView* frameView = this->frameView()) { |
546 HTMLFrameOwnerElement* ownerElement = document().ownerElement(); | 546 HTMLFrameOwnerElement* ownerElement = document().ownerElement(); |
547 if (!isDisallowedAutoscroll(ownerElement, frameView)) { | 547 if (!isDisallowedAutoscroll(ownerElement, frameView)) { |
548 if (makeVisibleInVisualViewport) { | 548 if (makeVisibleInVisualViewport) { |
549 frameView->scrollableArea()->scrollIntoView(rect, alignX, al
ignY, scrollType); | 549 frameView->getScrollableArea()->scrollIntoView(rect, alignX,
alignY, scrollType); |
550 } else { | 550 } else { |
551 frameView->layoutViewportScrollableArea()->scrollIntoView(re
ct, alignX, alignY, scrollType); | 551 frameView->layoutViewportScrollableArea()->scrollIntoView(re
ct, alignX, alignY, scrollType); |
552 } | 552 } |
553 if (ownerElement && ownerElement->layoutObject()) { | 553 if (ownerElement && ownerElement->layoutObject()) { |
554 if (frameView->safeToPropagateScrollToParent()) { | 554 if (frameView->safeToPropagateScrollToParent()) { |
555 parentBox = ownerElement->layoutObject()->enclosingBox()
; | 555 parentBox = ownerElement->layoutObject()->enclosingBox()
; |
556 // FIXME: This doesn't correctly convert the rect to | 556 // FIXME: This doesn't correctly convert the rect to |
557 // absolute coordinates in the parent. | 557 // absolute coordinates in the parent. |
558 newRect.setX(rect.x() - frameView->scrollX() + frameView
->x()); | 558 newRect.setX(rect.x() - frameView->scrollX() + frameView
->x()); |
559 newRect.setY(rect.y() - frameView->scrollY() + frameView
->y()); | 559 newRect.setY(rect.y() - frameView->scrollY() + frameView
->y()); |
(...skipping 77 matching lines...) Loading... |
637 | 637 |
638 return logicalHeight; | 638 return logicalHeight; |
639 } | 639 } |
640 | 640 |
641 void LayoutBox::setLocationAndUpdateOverflowControlsIfNeeded(const LayoutPoint&
location) | 641 void LayoutBox::setLocationAndUpdateOverflowControlsIfNeeded(const LayoutPoint&
location) |
642 { | 642 { |
643 if (hasOverflowClip()) { | 643 if (hasOverflowClip()) { |
644 IntSize oldPixelSnappedBorderRectSize = pixelSnappedBorderBoxRect().size
(); | 644 IntSize oldPixelSnappedBorderRectSize = pixelSnappedBorderBoxRect().size
(); |
645 setLocation(location); | 645 setLocation(location); |
646 if (pixelSnappedBorderBoxRect().size() != oldPixelSnappedBorderRectSize) | 646 if (pixelSnappedBorderBoxRect().size() != oldPixelSnappedBorderRectSize) |
647 scrollableArea()->updateAfterLayout(); | 647 getScrollableArea()->updateAfterLayout(); |
648 return; | 648 return; |
649 } | 649 } |
650 | 650 |
651 setLocation(location); | 651 setLocation(location); |
652 } | 652 } |
653 | 653 |
654 IntRect LayoutBox::absoluteContentBox() const | 654 IntRect LayoutBox::absoluteContentBox() const |
655 { | 655 { |
656 // This is wrong with transforms and flipped writing modes. | 656 // This is wrong with transforms and flipped writing modes. |
657 IntRect rect = pixelSnappedIntRect(contentBoxRect()); | 657 IntRect rect = pixelSnappedIntRect(contentBoxRect()); |
(...skipping 72 matching lines...) Loading... |
730 break; | 730 break; |
731 } | 731 } |
732 return result; | 732 return result; |
733 } | 733 } |
734 | 734 |
735 int LayoutBox::verticalScrollbarWidth() const | 735 int LayoutBox::verticalScrollbarWidth() const |
736 { | 736 { |
737 if (!hasOverflowClip() || style()->overflowY() == OverflowOverlay) | 737 if (!hasOverflowClip() || style()->overflowY() == OverflowOverlay) |
738 return 0; | 738 return 0; |
739 | 739 |
740 return scrollableArea()->verticalScrollbarWidth(); | 740 return getScrollableArea()->verticalScrollbarWidth(); |
741 } | 741 } |
742 | 742 |
743 int LayoutBox::horizontalScrollbarHeight() const | 743 int LayoutBox::horizontalScrollbarHeight() const |
744 { | 744 { |
745 if (!hasOverflowClip() || style()->overflowX() == OverflowOverlay) | 745 if (!hasOverflowClip() || style()->overflowX() == OverflowOverlay) |
746 return 0; | 746 return 0; |
747 | 747 |
748 return scrollableArea()->horizontalScrollbarHeight(); | 748 return getScrollableArea()->horizontalScrollbarHeight(); |
749 } | 749 } |
750 | 750 |
751 int LayoutBox::intrinsicScrollbarLogicalWidth() const | 751 int LayoutBox::intrinsicScrollbarLogicalWidth() const |
752 { | 752 { |
753 if (!hasOverflowClip()) | 753 if (!hasOverflowClip()) |
754 return 0; | 754 return 0; |
755 | 755 |
756 ASSERT(scrollableArea()); | 756 ASSERT(getScrollableArea()); |
757 | 757 |
758 if (isHorizontalWritingMode() && style()->overflowY() == OverflowScroll) { | 758 if (isHorizontalWritingMode() && style()->overflowY() == OverflowScroll) { |
759 // Even with OverflowScroll, the scrollbar may not exist (crbug.com/4150
31). | 759 // Even with OverflowScroll, the scrollbar may not exist (crbug.com/4150
31). |
760 return scrollableArea()->hasVerticalScrollbar() ? verticalScrollbarWidth
() : 0; | 760 return getScrollableArea()->hasVerticalScrollbar() ? verticalScrollbarWi
dth() : 0; |
761 } | 761 } |
762 | 762 |
763 if (!isHorizontalWritingMode() && style()->overflowX() == OverflowScroll) { | 763 if (!isHorizontalWritingMode() && style()->overflowX() == OverflowScroll) { |
764 // Even with OverflowScroll, the scrollbar may not exist (crbug.com/4150
31). | 764 // Even with OverflowScroll, the scrollbar may not exist (crbug.com/4150
31). |
765 return scrollableArea()->hasHorizontalScrollbar() ? horizontalScrollbarH
eight() : 0; | 765 return getScrollableArea()->hasHorizontalScrollbar() ? horizontalScrollb
arHeight() : 0; |
766 } | 766 } |
767 | 767 |
768 return 0; | 768 return 0; |
769 } | 769 } |
770 | 770 |
771 ScrollResult LayoutBox::scroll(ScrollGranularity granularity, const FloatSize& d
elta) | 771 ScrollResult LayoutBox::scroll(ScrollGranularity granularity, const FloatSize& d
elta) |
772 { | 772 { |
773 // Presumably the same issue as in setScrollTop. See crbug.com/343132. | 773 // Presumably the same issue as in setScrollTop. See crbug.com/343132. |
774 DisableCompositingQueryAsserts disabler; | 774 DisableCompositingQueryAsserts disabler; |
775 | 775 |
776 if (!scrollableArea()) | 776 if (!getScrollableArea()) |
777 return ScrollResult(); | 777 return ScrollResult(); |
778 | 778 |
779 return scrollableArea()->userScroll(granularity, delta); | 779 return getScrollableArea()->userScroll(granularity, delta); |
780 } | 780 } |
781 | 781 |
782 bool LayoutBox::canBeScrolledAndHasScrollableArea() const | 782 bool LayoutBox::canBeScrolledAndHasScrollableArea() const |
783 { | 783 { |
784 return canBeProgramaticallyScrolled() && (pixelSnappedScrollHeight() != pixe
lSnappedClientHeight() || pixelSnappedScrollWidth() != pixelSnappedClientWidth()
); | 784 return canBeProgramaticallyScrolled() && (pixelSnappedScrollHeight() != pixe
lSnappedClientHeight() || pixelSnappedScrollWidth() != pixelSnappedClientWidth()
); |
785 } | 785 } |
786 | 786 |
787 bool LayoutBox::canBeProgramaticallyScrolled() const | 787 bool LayoutBox::canBeProgramaticallyScrolled() const |
788 { | 788 { |
789 Node* node = this->node(); | 789 Node* node = this->node(); |
(...skipping 123 matching lines...) Loading... |
913 void LayoutBox::scrollByRecursively(const DoubleSize& delta, ScrollOffsetClampin
g clamp) | 913 void LayoutBox::scrollByRecursively(const DoubleSize& delta, ScrollOffsetClampin
g clamp) |
914 { | 914 { |
915 if (delta.isZero()) | 915 if (delta.isZero()) |
916 return; | 916 return; |
917 | 917 |
918 bool restrictedByLineClamp = false; | 918 bool restrictedByLineClamp = false; |
919 if (parent()) | 919 if (parent()) |
920 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); | 920 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); |
921 | 921 |
922 if (hasOverflowClip() && !restrictedByLineClamp) { | 922 if (hasOverflowClip() && !restrictedByLineClamp) { |
923 PaintLayerScrollableArea* scrollableArea = this->scrollableArea(); | 923 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); |
924 ASSERT(scrollableArea); | 924 ASSERT(scrollableArea); |
925 | 925 |
926 DoubleSize newScrollOffset = scrollableArea->adjustedScrollOffset() + de
lta; | 926 DoubleSize newScrollOffset = scrollableArea->adjustedScrollOffset() + de
lta; |
927 scrollableArea->scrollToOffset(newScrollOffset, clamp); | 927 scrollableArea->scrollToOffset(newScrollOffset, clamp); |
928 | 928 |
929 // If this layer can't do the scroll we ask the next layer up that can s
croll to try | 929 // If this layer can't do the scroll we ask the next layer up that can s
croll to try |
930 DoubleSize remainingScrollOffset = newScrollOffset - scrollableArea->adj
ustedScrollOffset(); | 930 DoubleSize remainingScrollOffset = newScrollOffset - scrollableArea->adj
ustedScrollOffset(); |
931 if (!remainingScrollOffset.isZero() && parent()) { | 931 if (!remainingScrollOffset.isZero() && parent()) { |
932 if (LayoutBox* scrollableBox = enclosingScrollableBox()) | 932 if (LayoutBox* scrollableBox = enclosingScrollableBox()) |
933 scrollableBox->scrollByRecursively(remainingScrollOffset, clamp)
; | 933 scrollableBox->scrollByRecursively(remainingScrollOffset, clamp)
; |
(...skipping 16 matching lines...) Loading... |
950 bool LayoutBox::needsPreferredWidthsRecalculation() const | 950 bool LayoutBox::needsPreferredWidthsRecalculation() const |
951 { | 951 { |
952 return style()->paddingStart().hasPercent() || style()->paddingEnd().hasPerc
ent(); | 952 return style()->paddingStart().hasPercent() || style()->paddingEnd().hasPerc
ent(); |
953 } | 953 } |
954 | 954 |
955 IntSize LayoutBox::scrolledContentOffset() const | 955 IntSize LayoutBox::scrolledContentOffset() const |
956 { | 956 { |
957 ASSERT(hasOverflowClip()); | 957 ASSERT(hasOverflowClip()); |
958 ASSERT(hasLayer()); | 958 ASSERT(hasLayer()); |
959 // FIXME: Return DoubleSize here. crbug.com/414283. | 959 // FIXME: Return DoubleSize here. crbug.com/414283. |
960 return flooredIntSize(scrollableArea()->scrollOffset()); | 960 return flooredIntSize(getScrollableArea()->scrollOffset()); |
961 } | 961 } |
962 | 962 |
963 void LayoutBox::mapScrollingContentsRectToBoxSpace(LayoutRect& rect) const | 963 void LayoutBox::mapScrollingContentsRectToBoxSpace(LayoutRect& rect) const |
964 { | 964 { |
965 ASSERT(hasLayer()); | 965 ASSERT(hasLayer()); |
966 ASSERT(hasOverflowClip()); | 966 ASSERT(hasOverflowClip()); |
967 | 967 |
968 LayoutSize offset = LayoutSize(-scrolledContentOffset()); | 968 LayoutSize offset = LayoutSize(-scrolledContentOffset()); |
969 if (UNLIKELY(hasFlippedBlocksWritingMode())) { | 969 if (UNLIKELY(hasFlippedBlocksWritingMode())) { |
970 if (isHorizontalWritingMode()) | 970 if (isHorizontalWritingMode()) |
(...skipping 478 matching lines...) Loading... |
1449 screenArea = static_cast<uint32_t>(screenRect.width() * screenRect.heigh
t()); | 1449 screenArea = static_cast<uint32_t>(screenRect.width() * screenRect.heigh
t()); |
1450 return ResourcePriority(isVisible ? ResourcePriority::Visible : ResourcePrio
rity::NotVisible, screenArea); | 1450 return ResourcePriority(isVisible ? ResourcePriority::Visible : ResourcePrio
rity::NotVisible, screenArea); |
1451 } | 1451 } |
1452 | 1452 |
1453 bool LayoutBox::invalidatePaintOfLayerRectsForImage(WrappedImagePtr image, const
FillLayer& layers, bool drawingBackground) | 1453 bool LayoutBox::invalidatePaintOfLayerRectsForImage(WrappedImagePtr image, const
FillLayer& layers, bool drawingBackground) |
1454 { | 1454 { |
1455 if (drawingBackground && (isDocumentElement() || backgroundStolenForBeingBod
y())) | 1455 if (drawingBackground && (isDocumentElement() || backgroundStolenForBeingBod
y())) |
1456 return false; | 1456 return false; |
1457 for (const FillLayer* curLayer = &layers; curLayer; curLayer = curLayer->nex
t()) { | 1457 for (const FillLayer* curLayer = &layers; curLayer; curLayer = curLayer->nex
t()) { |
1458 if (curLayer->image() && image == curLayer->image()->data()) { | 1458 if (curLayer->image() && image == curLayer->image()->data()) { |
1459 bool maybeAnimated = curLayer->image()->cachedImage() && curLayer->i
mage()->cachedImage()->image() && curLayer->image()->cachedImage()->image()->may
beAnimated(); | 1459 bool maybeAnimated = curLayer->image()->cachedImage() && curLayer->i
mage()->cachedImage()->getImage() && curLayer->image()->cachedImage()->getImage(
)->maybeAnimated(); |
1460 if (maybeAnimated && drawingBackground) | 1460 if (maybeAnimated && drawingBackground) |
1461 setShouldDoFullPaintInvalidation(PaintInvalidationDelayedFull); | 1461 setShouldDoFullPaintInvalidation(PaintInvalidationDelayedFull); |
1462 else | 1462 else |
1463 setShouldDoFullPaintInvalidation(); | 1463 setShouldDoFullPaintInvalidation(); |
1464 | 1464 |
1465 if (drawingBackground) | 1465 if (drawingBackground) |
1466 invalidateBackgroundObscurationStatus(); | 1466 invalidateBackgroundObscurationStatus(); |
1467 return true; | 1467 return true; |
1468 } | 1468 } |
1469 } | 1469 } |
1470 return false; | 1470 return false; |
1471 } | 1471 } |
1472 | 1472 |
1473 bool LayoutBox::intersectsVisibleViewport() | 1473 bool LayoutBox::intersectsVisibleViewport() |
1474 { | 1474 { |
1475 LayoutRect rect = visualOverflowRect(); | 1475 LayoutRect rect = visualOverflowRect(); |
1476 LayoutView* layoutView = view(); | 1476 LayoutView* layoutView = view(); |
1477 while (layoutView->frame()->ownerLayoutObject()) | 1477 while (layoutView->frame()->ownerLayoutObject()) |
1478 layoutView = layoutView->frame()->ownerLayoutObject()->view(); | 1478 layoutView = layoutView->frame()->ownerLayoutObject()->view(); |
1479 mapToVisibleRectInAncestorSpace(layoutView, rect, nullptr); | 1479 mapToVisibleRectInAncestorSpace(layoutView, rect, nullptr); |
1480 return rect.intersects(LayoutRect(layoutView->frameView()->scrollableArea()-
>visibleContentRectDouble())); | 1480 return rect.intersects(LayoutRect(layoutView->frameView()->getScrollableArea
()->visibleContentRectDouble())); |
1481 } | 1481 } |
1482 | 1482 |
1483 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded(PaintInvalidationStat
e& paintInvalidationState, const LayoutBoxModelObject& paintInvalidationContaine
r) | 1483 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded(PaintInvalidationStat
e& paintInvalidationState, const LayoutBoxModelObject& paintInvalidationContaine
r) |
1484 { | 1484 { |
1485 if (isFloating()) | 1485 if (isFloating()) |
1486 paintInvalidationState.enclosingSelfPaintingLayer(*this).setNeedsPaintPh
aseFloat(); | 1486 paintInvalidationState.enclosingSelfPaintingLayer(*this).setNeedsPaintPh
aseFloat(); |
1487 | 1487 |
1488 if (hasBoxDecorationBackground() | 1488 if (hasBoxDecorationBackground() |
1489 // We also paint overflow controls in background phase. | 1489 // We also paint overflow controls in background phase. |
1490 || (hasOverflowClip() && scrollableArea()->hasOverflowControls())) { | 1490 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) { |
1491 PaintLayer& layer = paintInvalidationState.enclosingSelfPaintingLayer(*t
his); | 1491 PaintLayer& layer = paintInvalidationState.enclosingSelfPaintingLayer(*t
his); |
1492 if (layer.layoutObject() != this) | 1492 if (layer.layoutObject() != this) |
1493 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); | 1493 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); |
1494 } | 1494 } |
1495 | 1495 |
1496 PaintInvalidationReason fullInvalidationReason = fullPaintInvalidationReason
(); | 1496 PaintInvalidationReason fullInvalidationReason = fullPaintInvalidationReason
(); |
1497 // If the current paint invalidation reason is PaintInvalidationDelayedFull,
then this paint invalidation can delayed if the | 1497 // If the current paint invalidation reason is PaintInvalidationDelayedFull,
then this paint invalidation can delayed if the |
1498 // LayoutBox in question is not on-screen. The logic to decide whether this
is appropriate exists at the site of the original | 1498 // LayoutBox in question is not on-screen. The logic to decide whether this
is appropriate exists at the site of the original |
1499 // paint invalidation that chose PaintInvalidationDelayedFull. | 1499 // paint invalidation that chose PaintInvalidationDelayedFull. |
1500 if (fullInvalidationReason == PaintInvalidationDelayedFull) { | 1500 if (fullInvalidationReason == PaintInvalidationDelayedFull) { |
1501 if (!intersectsVisibleViewport()) | 1501 if (!intersectsVisibleViewport()) |
1502 return PaintInvalidationDelayedFull; | 1502 return PaintInvalidationDelayedFull; |
1503 | 1503 |
1504 // Reset state back to regular full paint invalidation if the object is
onscreen. | 1504 // Reset state back to regular full paint invalidation if the object is
onscreen. |
1505 setShouldDoFullPaintInvalidation(PaintInvalidationFull); | 1505 setShouldDoFullPaintInvalidation(PaintInvalidationFull); |
1506 } | 1506 } |
1507 | 1507 |
1508 PaintInvalidationReason reason = LayoutBoxModelObject::invalidatePaintIfNeed
ed(paintInvalidationState, paintInvalidationContainer); | 1508 PaintInvalidationReason reason = LayoutBoxModelObject::invalidatePaintIfNeed
ed(paintInvalidationState, paintInvalidationContainer); |
1509 | 1509 |
1510 if (!view()->doingFullPaintInvalidation() && !isFullPaintInvalidationReason(
reason)) | 1510 if (!view()->doingFullPaintInvalidation() && !isFullPaintInvalidationReason(
reason)) |
1511 invalidatePaintForOverflowIfNeeded(); | 1511 invalidatePaintForOverflowIfNeeded(); |
1512 | 1512 |
1513 if (PaintLayerScrollableArea* area = scrollableArea()) | 1513 if (PaintLayerScrollableArea* area = getScrollableArea()) |
1514 area->invalidatePaintOfScrollControlsIfNeeded(paintInvalidationState, pa
intInvalidationContainer); | 1514 area->invalidatePaintOfScrollControlsIfNeeded(paintInvalidationState, pa
intInvalidationContainer); |
1515 | 1515 |
1516 // This is for the next invalidatePaintIfNeeded so must be at the end. | 1516 // This is for the next invalidatePaintIfNeeded so must be at the end. |
1517 savePreviousBoxSizesIfNeeded(); | 1517 savePreviousBoxSizesIfNeeded(); |
1518 return reason; | 1518 return reason; |
1519 } | 1519 } |
1520 | 1520 |
1521 void LayoutBox::invalidatePaintOfSubtreesIfNeeded(PaintInvalidationState& childP
aintInvalidationState) | 1521 void LayoutBox::invalidatePaintOfSubtreesIfNeeded(PaintInvalidationState& childP
aintInvalidationState) |
1522 { | 1522 { |
1523 LayoutBoxModelObject::invalidatePaintOfSubtreesIfNeeded(childPaintInvalidati
onState); | 1523 LayoutBoxModelObject::invalidatePaintOfSubtreesIfNeeded(childPaintInvalidati
onState); |
(...skipping 12 matching lines...) Loading... |
1536 clipRect.setLocation(location + clipRect.location() + LayoutSize(borderLeft(
), borderTop())); | 1536 clipRect.setLocation(location + clipRect.location() + LayoutSize(borderLeft(
), borderTop())); |
1537 clipRect.setSize(clipRect.size() - LayoutSize(borderLeft() + borderRight(),
borderTop() + borderBottom())); | 1537 clipRect.setSize(clipRect.size() - LayoutSize(borderLeft() + borderRight(),
borderTop() + borderBottom())); |
1538 | 1538 |
1539 if (hasOverflowClip()) | 1539 if (hasOverflowClip()) |
1540 excludeScrollbars(clipRect, relevancy); | 1540 excludeScrollbars(clipRect, relevancy); |
1541 return clipRect; | 1541 return clipRect; |
1542 } | 1542 } |
1543 | 1543 |
1544 void LayoutBox::excludeScrollbars(LayoutRect& rect, OverlayScrollbarSizeRelevanc
y relevancy) const | 1544 void LayoutBox::excludeScrollbars(LayoutRect& rect, OverlayScrollbarSizeRelevanc
y relevancy) const |
1545 { | 1545 { |
1546 if (PaintLayerScrollableArea* scrollableArea = this->scrollableArea()) { | 1546 if (PaintLayerScrollableArea* scrollableArea = this->getScrollableArea()) { |
1547 if (shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) | 1547 if (shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) |
1548 rect.move(scrollableArea->verticalScrollbarWidth(relevancy), 0); | 1548 rect.move(scrollableArea->verticalScrollbarWidth(relevancy), 0); |
1549 rect.contract(scrollableArea->verticalScrollbarWidth(relevancy), scrolla
bleArea->horizontalScrollbarHeight(relevancy)); | 1549 rect.contract(scrollableArea->verticalScrollbarWidth(relevancy), scrolla
bleArea->horizontalScrollbarHeight(relevancy)); |
1550 } | 1550 } |
1551 } | 1551 } |
1552 | 1552 |
1553 LayoutRect LayoutBox::clipRect(const LayoutPoint& location) const | 1553 LayoutRect LayoutBox::clipRect(const LayoutPoint& location) const |
1554 { | 1554 { |
1555 LayoutRect borderBoxRect = this->borderBoxRect(); | 1555 LayoutRect borderBoxRect = this->borderBoxRect(); |
1556 LayoutRect clipRect = LayoutRect(borderBoxRect.location() + location, border
BoxRect.size()); | 1556 LayoutRect clipRect = LayoutRect(borderBoxRect.location() + location, border
BoxRect.size()); |
(...skipping 2064 matching lines...) Loading... |
3621 } | 3621 } |
3622 | 3622 |
3623 // If height of box is smaller than font height, use the latter one, | 3623 // If height of box is smaller than font height, use the latter one, |
3624 // otherwise the caret might become invisible. | 3624 // otherwise the caret might become invisible. |
3625 // | 3625 // |
3626 // Also, if the box is not an atomic inline-level element, always use the fo
nt height. | 3626 // Also, if the box is not an atomic inline-level element, always use the fo
nt height. |
3627 // This prevents the "big caret" bug described in: | 3627 // This prevents the "big caret" bug described in: |
3628 // <rdar://problem/3777804> Deleting all content in a document can result in
giant tall-as-window insertion point | 3628 // <rdar://problem/3777804> Deleting all content in a document can result in
giant tall-as-window insertion point |
3629 // | 3629 // |
3630 // FIXME: ignoring :first-line, missing good reason to take care of | 3630 // FIXME: ignoring :first-line, missing good reason to take care of |
3631 LayoutUnit fontHeight = LayoutUnit(style()->fontMetrics().height()); | 3631 LayoutUnit fontHeight = LayoutUnit(style()->getFontMetrics().height()); |
3632 if (fontHeight > rect.height() || (!isAtomicInlineLevel() && !isTable())) | 3632 if (fontHeight > rect.height() || (!isAtomicInlineLevel() && !isTable())) |
3633 rect.setHeight(fontHeight); | 3633 rect.setHeight(fontHeight); |
3634 | 3634 |
3635 if (extraWidthToEndOfLine) | 3635 if (extraWidthToEndOfLine) |
3636 *extraWidthToEndOfLine = location().x() + size().width() - rect.maxX(); | 3636 *extraWidthToEndOfLine = location().x() + size().width() - rect.maxX(); |
3637 | 3637 |
3638 // Move to local coords | 3638 // Move to local coords |
3639 rect.moveBy(-location()); | 3639 rect.moveBy(-location()); |
3640 | 3640 |
3641 // FIXME: Border/padding should be added for all elements but this workaroun
d | 3641 // FIXME: Border/padding should be added for all elements but this workaroun
d |
(...skipping 110 matching lines...) Loading... |
3752 return node && node->isElementNode() && (toElement(node)->isFormControlEleme
nt() || isHTMLImageElement(toElement(node))); | 3752 return node && node->isElementNode() && (toElement(node)->isFormControlEleme
nt() || isHTMLImageElement(toElement(node))); |
3753 } | 3753 } |
3754 | 3754 |
3755 bool LayoutBox::avoidsFloats() const | 3755 bool LayoutBox::avoidsFloats() const |
3756 { | 3756 { |
3757 return isAtomicInlineLevel() || shouldBeConsideredAsReplaced(node()) || hasO
verflowClip() || isHR() || isLegend() || isWritingModeRoot() || isFlexItemInclud
ingDeprecated() || style()->containsPaint() || style()->containsLayout(); | 3757 return isAtomicInlineLevel() || shouldBeConsideredAsReplaced(node()) || hasO
verflowClip() || isHR() || isLegend() || isWritingModeRoot() || isFlexItemInclud
ingDeprecated() || style()->containsPaint() || style()->containsLayout(); |
3758 } | 3758 } |
3759 | 3759 |
3760 bool LayoutBox::hasNonCompositedScrollbars() const | 3760 bool LayoutBox::hasNonCompositedScrollbars() const |
3761 { | 3761 { |
3762 if (PaintLayerScrollableArea* scrollableArea = this->scrollableArea()) { | 3762 if (PaintLayerScrollableArea* scrollableArea = this->getScrollableArea()) { |
3763 if (scrollableArea->hasHorizontalScrollbar() && !scrollableArea->layerFo
rHorizontalScrollbar()) | 3763 if (scrollableArea->hasHorizontalScrollbar() && !scrollableArea->layerFo
rHorizontalScrollbar()) |
3764 return true; | 3764 return true; |
3765 if (scrollableArea->hasVerticalScrollbar() && !scrollableArea->layerForV
erticalScrollbar()) | 3765 if (scrollableArea->hasVerticalScrollbar() && !scrollableArea->layerForV
erticalScrollbar()) |
3766 return true; | 3766 return true; |
3767 } | 3767 } |
3768 return false; | 3768 return false; |
3769 } | 3769 } |
3770 | 3770 |
3771 PaintInvalidationReason LayoutBox::getPaintInvalidationReason(const LayoutBoxMod
elObject& paintInvalidationContainer, | 3771 PaintInvalidationReason LayoutBox::getPaintInvalidationReason(const LayoutBoxMod
elObject& paintInvalidationContainer, |
3772 const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const LayoutRec
t& newBounds, const LayoutPoint& newLocation) const | 3772 const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const LayoutRec
t& newBounds, const LayoutPoint& newLocation) const |
(...skipping 60 matching lines...) Loading... |
3833 return PaintInvalidationBorderBoxChange; | 3833 return PaintInvalidationBorderBoxChange; |
3834 | 3834 |
3835 if (style()->hasVisualOverflowingEffect() || style()->hasAppearance() || sty
le()->hasFilter() || style()->resize() != RESIZE_NONE) | 3835 if (style()->hasVisualOverflowingEffect() || style()->hasAppearance() || sty
le()->hasFilter() || style()->resize() != RESIZE_NONE) |
3836 return PaintInvalidationBorderBoxChange; | 3836 return PaintInvalidationBorderBoxChange; |
3837 | 3837 |
3838 if (style()->hasBorderRadius()) { | 3838 if (style()->hasBorderRadius()) { |
3839 // If a border-radius exists and width/height is smaller than radius wid
th/height, | 3839 // If a border-radius exists and width/height is smaller than radius wid
th/height, |
3840 // we need to fully invalidate to cover the changed radius. | 3840 // we need to fully invalidate to cover the changed radius. |
3841 FloatRoundedRect oldRoundedRect = style()->getRoundedBorderFor(LayoutRec
t(LayoutPoint(0, 0), oldBorderBoxSize)); | 3841 FloatRoundedRect oldRoundedRect = style()->getRoundedBorderFor(LayoutRec
t(LayoutPoint(0, 0), oldBorderBoxSize)); |
3842 FloatRoundedRect newRoundedRect = style()->getRoundedBorderFor(LayoutRec
t(LayoutPoint(0, 0), newBorderBoxSize)); | 3842 FloatRoundedRect newRoundedRect = style()->getRoundedBorderFor(LayoutRec
t(LayoutPoint(0, 0), newBorderBoxSize)); |
3843 if (oldRoundedRect.radii() != newRoundedRect.radii()) | 3843 if (oldRoundedRect.getRadii() != newRoundedRect.getRadii()) |
3844 return PaintInvalidationBorderBoxChange; | 3844 return PaintInvalidationBorderBoxChange; |
3845 } | 3845 } |
3846 | 3846 |
3847 if (oldBorderBoxSize.width() != newBorderBoxSize.width() && mustInvalidateBa
ckgroundOrBorderPaintOnWidthChange()) | 3847 if (oldBorderBoxSize.width() != newBorderBoxSize.width() && mustInvalidateBa
ckgroundOrBorderPaintOnWidthChange()) |
3848 return PaintInvalidationBorderBoxChange; | 3848 return PaintInvalidationBorderBoxChange; |
3849 if (oldBorderBoxSize.height() != newBorderBoxSize.height() && mustInvalidate
BackgroundOrBorderPaintOnHeightChange()) | 3849 if (oldBorderBoxSize.height() != newBorderBoxSize.height() && mustInvalidate
BackgroundOrBorderPaintOnHeightChange()) |
3850 return PaintInvalidationBorderBoxChange; | 3850 return PaintInvalidationBorderBoxChange; |
3851 | 3851 |
3852 return PaintInvalidationIncremental; | 3852 return PaintInvalidationIncremental; |
3853 } | 3853 } |
(...skipping 785 matching lines...) Loading... |
4639 } | 4639 } |
4640 | 4640 |
4641 ShapeOutsideInfo* LayoutBox::shapeOutsideInfo() const | 4641 ShapeOutsideInfo* LayoutBox::shapeOutsideInfo() const |
4642 { | 4642 { |
4643 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*this)
: nullptr; | 4643 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*this)
: nullptr; |
4644 } | 4644 } |
4645 | 4645 |
4646 void LayoutBox::clearPreviousPaintInvalidationRects() | 4646 void LayoutBox::clearPreviousPaintInvalidationRects() |
4647 { | 4647 { |
4648 LayoutBoxModelObject::clearPreviousPaintInvalidationRects(); | 4648 LayoutBoxModelObject::clearPreviousPaintInvalidationRects(); |
4649 if (PaintLayerScrollableArea* scrollableArea = this->scrollableArea()) | 4649 if (PaintLayerScrollableArea* scrollableArea = this->getScrollableArea()) |
4650 scrollableArea->clearPreviousPaintInvalidationRects(); | 4650 scrollableArea->clearPreviousPaintInvalidationRects(); |
4651 } | 4651 } |
4652 | 4652 |
4653 void LayoutBox::setPercentHeightContainer(LayoutBlock* container) | 4653 void LayoutBox::setPercentHeightContainer(LayoutBlock* container) |
4654 { | 4654 { |
4655 ASSERT(!container || !percentHeightContainer()); | 4655 ASSERT(!container || !percentHeightContainer()); |
4656 if (!container && !m_rareData) | 4656 if (!container && !m_rareData) |
4657 return; | 4657 return; |
4658 ensureRareData().m_percentHeightContainer = container; | 4658 ensureRareData().m_percentHeightContainer = container; |
4659 } | 4659 } |
(...skipping 18 matching lines...) Loading... |
4678 } | 4678 } |
4679 | 4679 |
4680 void LayoutBox::IntrinsicSizingInfo::transpose() | 4680 void LayoutBox::IntrinsicSizingInfo::transpose() |
4681 { | 4681 { |
4682 size = size.transposedSize(); | 4682 size = size.transposedSize(); |
4683 aspectRatio = aspectRatio.transposedSize(); | 4683 aspectRatio = aspectRatio.transposedSize(); |
4684 std::swap(hasWidth, hasHeight); | 4684 std::swap(hasWidth, hasHeight); |
4685 } | 4685 } |
4686 | 4686 |
4687 } // namespace blink | 4687 } // namespace blink |
OLD | NEW |