Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 635 void DeprecatedPaintLayerScrollableArea::scrollToOffset(const DoubleSize& scroll Offset, ScrollOffsetClamping clamp, ScrollBehavior scrollBehavior) | 635 void DeprecatedPaintLayerScrollableArea::scrollToOffset(const DoubleSize& scroll Offset, ScrollOffsetClamping clamp, ScrollBehavior scrollBehavior) |
| 636 { | 636 { |
| 637 cancelProgrammaticScrollAnimation(); | 637 cancelProgrammaticScrollAnimation(); |
| 638 DoubleSize newScrollOffset = clamp == ScrollOffsetClamped ? clampScrollOffse t(scrollOffset) : scrollOffset; | 638 DoubleSize newScrollOffset = clamp == ScrollOffsetClamped ? clampScrollOffse t(scrollOffset) : scrollOffset; |
| 639 if (newScrollOffset != adjustedScrollOffset()) { | 639 if (newScrollOffset != adjustedScrollOffset()) { |
| 640 DoublePoint origin(scrollOrigin()); | 640 DoublePoint origin(scrollOrigin()); |
| 641 ScrollableArea::setScrollPosition(-origin + newScrollOffset, Programmati cScroll, scrollBehavior); | 641 ScrollableArea::setScrollPosition(-origin + newScrollOffset, Programmati cScroll, scrollBehavior); |
| 642 } | 642 } |
| 643 } | 643 } |
| 644 | 644 |
| 645 void DeprecatedPaintLayerScrollableArea::updateAfterLayout() | 645 void DeprecatedPaintLayerScrollableArea::updateScrollDimensions(DoubleSize& scro llOffset, bool& autoHorizontalScrollBarChanged, bool& autoVerticalScrollBarChang ed) |
| 646 { | 646 { |
| 647 ASSERT(box().hasOverflowClip()); | 647 ASSERT(box().hasOverflowClip()); |
| 648 | 648 |
| 649 DoubleSize originalScrollOffset = adjustedScrollOffset(); | 649 scrollOffset = adjustedScrollOffset(); |
| 650 computeScrollDimensions(); | 650 computeScrollDimensions(); |
| 651 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); | |
| 652 bool hasVerticalOverflow = this->hasVerticalOverflow(); | |
| 653 if (hasOverlayScrollbars()) { | |
| 654 if (!scrollSize(HorizontalScrollbar)) | |
| 655 setHasHorizontalScrollbar(false); | |
| 656 if (!scrollSize(VerticalScrollbar)) | |
| 657 setHasVerticalScrollbar(false); | |
| 658 } | |
| 659 | |
| 660 // overflow:auto may need to lay out again if scrollbars got added/removed. | |
| 661 autoHorizontalScrollBarChanged = box().hasAutoHorizontalScrollbar() && (hasH orizontalScrollbar() != hasHorizontalOverflow); | |
| 662 autoVerticalScrollBarChanged = box().hasAutoVerticalScrollbar() && (hasVerti calScrollbar() != hasVerticalOverflow); | |
| 663 if (!visualViewportSuppliesScrollbars() && (autoHorizontalScrollBarChanged | | autoVerticalScrollBarChanged)) { | |
| 664 if (box().hasAutoHorizontalScrollbar()) | |
| 665 setHasHorizontalScrollbar(hasHorizontalOverflow); | |
| 666 if (box().hasAutoVerticalScrollbar()) | |
| 667 setHasVerticalScrollbar(hasVerticalOverflow); | |
| 668 } | |
| 669 } | |
| 670 | |
| 671 void DeprecatedPaintLayerScrollableArea::finalizeScrollDimensions(const DoubleSi ze& originalScrollOffset, bool autoHorizontalScrollBarChanged, bool autoVertical ScrollBarChanged) | |
| 672 { | |
| 673 ASSERT(box().hasOverflowClip()); | |
| 651 | 674 |
| 652 // Layout may cause us to be at an invalid scroll position. In this case we need | 675 // Layout may cause us to be at an invalid scroll position. In this case we need |
| 653 // to pull our scroll offsets back to the max (or push them up to the min). | 676 // to pull our scroll offsets back to the max (or push them up to the min). |
| 654 DoubleSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); | 677 DoubleSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); |
| 655 if (clampedScrollOffset != adjustedScrollOffset()) | 678 if (clampedScrollOffset != adjustedScrollOffset()) |
| 656 scrollToOffset(clampedScrollOffset); | 679 scrollToOffset(clampedScrollOffset); |
| 657 | 680 |
| 658 if (originalScrollOffset != adjustedScrollOffset()) { | 681 if (originalScrollOffset != adjustedScrollOffset()) { |
| 659 DoublePoint origin(scrollOrigin()); | 682 DoublePoint origin(scrollOrigin()); |
| 660 scrollPositionChanged(-origin + adjustedScrollOffset(), ProgrammaticScro ll); | 683 scrollPositionChanged(-origin + adjustedScrollOffset(), ProgrammaticScro ll); |
| 661 } | 684 } |
| 662 | 685 |
| 663 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); | 686 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); |
| 664 bool hasVerticalOverflow = this->hasVerticalOverflow(); | 687 bool hasVerticalOverflow = this->hasVerticalOverflow(); |
| 665 | 688 |
| 666 { | 689 { |
| 667 // Hits in compositing/overflow/automatically-opt-into-composited-scroll ing-after-style-change.html. | 690 // Hits in compositing/overflow/automatically-opt-into-composited-scroll ing-after-style-change.html. |
| 668 DisableCompositingQueryAsserts disabler; | 691 DisableCompositingQueryAsserts disabler; |
| 669 | 692 |
| 670 // overflow:scroll should just enable/disable. | 693 // overflow:scroll should just enable/disable. |
| 671 if (box().style()->overflowX() == OSCROLL && horizontalScrollbar()) | 694 if (box().style()->overflowX() == OSCROLL && horizontalScrollbar()) |
| 672 horizontalScrollbar()->setEnabled(hasHorizontalOverflow); | 695 horizontalScrollbar()->setEnabled(hasHorizontalOverflow); |
| 673 if (box().style()->overflowY() == OSCROLL && verticalScrollbar()) | 696 if (box().style()->overflowY() == OSCROLL && verticalScrollbar()) |
| 674 verticalScrollbar()->setEnabled(hasVerticalOverflow); | 697 verticalScrollbar()->setEnabled(hasVerticalOverflow); |
| 675 } | 698 } |
| 676 if (hasOverlayScrollbars()) { | |
| 677 if (!scrollSize(HorizontalScrollbar)) | |
| 678 setHasHorizontalScrollbar(false); | |
| 679 if (!scrollSize(VerticalScrollbar)) | |
| 680 setHasVerticalScrollbar(false); | |
| 681 } | |
| 682 // overflow:auto may need to lay out again if scrollbars got added/removed. | |
| 683 bool autoHorizontalScrollBarChanged = box().hasAutoHorizontalScrollbar() && (hasHorizontalScrollbar() != hasHorizontalOverflow); | |
| 684 bool autoVerticalScrollBarChanged = box().hasAutoVerticalScrollbar() && (has VerticalScrollbar() != hasVerticalOverflow); | |
| 685 | 699 |
| 686 if (!visualViewportSuppliesScrollbars() && (autoHorizontalScrollBarChanged | | autoVerticalScrollBarChanged)) { | 700 if (!visualViewportSuppliesScrollbars() && (autoHorizontalScrollBarChanged | | autoVerticalScrollBarChanged)) { |
| 687 if (box().hasAutoHorizontalScrollbar()) | |
| 688 setHasHorizontalScrollbar(hasHorizontalOverflow); | |
| 689 if (box().hasAutoVerticalScrollbar()) | |
| 690 setHasVerticalScrollbar(hasVerticalOverflow); | |
| 691 | |
| 692 if (hasVerticalOverflow || hasHorizontalOverflow) | 701 if (hasVerticalOverflow || hasHorizontalOverflow) |
| 693 updateScrollCornerStyle(); | 702 updateScrollCornerStyle(); |
| 694 | 703 |
| 695 layer()->updateSelfPaintingLayer(); | 704 layer()->updateSelfPaintingLayer(); |
| 696 | 705 |
| 697 // Force an update since we know the scrollbars have changed things. | 706 // Force an update since we know the scrollbars have changed things. |
| 698 if (box().document().hasAnnotatedRegions()) | 707 if (box().document().hasAnnotatedRegions()) |
| 699 box().document().setAnnotatedRegionsDirty(true); | 708 box().document().setAnnotatedRegionsDirty(true); |
| 700 | 709 |
| 701 if (box().style()->overflowX() == OAUTO || box().style()->overflowY() == OAUTO) { | 710 if (box().style()->overflowX() == OAUTO || box().style()->overflowY() == OAUTO) { |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 731 } | 740 } |
| 732 } | 741 } |
| 733 | 742 |
| 734 bool hasOverflow = hasScrollableHorizontalOverflow() || hasScrollableVertica lOverflow(); | 743 bool hasOverflow = hasScrollableHorizontalOverflow() || hasScrollableVertica lOverflow(); |
| 735 updateScrollableAreaSet(hasOverflow); | 744 updateScrollableAreaSet(hasOverflow); |
| 736 | 745 |
| 737 DisableCompositingQueryAsserts disabler; | 746 DisableCompositingQueryAsserts disabler; |
| 738 positionOverflowControls(); | 747 positionOverflowControls(); |
| 739 } | 748 } |
| 740 | 749 |
| 750 void DeprecatedPaintLayerScrollableArea::updateAfterLayout() | |
| 751 { | |
| 752 DoubleSize originalScrollOffset; | |
| 753 bool autoHorizontalScrollBarChanged; | |
|
leviw_travelin_and_unemployed
2015/08/20 18:53:06
Kinda sucks that these are necessary and un-used h
szager1
2015/08/20 21:53:29
But they are used: updateScrollDimensions will pop
| |
| 754 bool autoVerticalScrollBarChanged; | |
| 755 updateScrollDimensions(originalScrollOffset, autoHorizontalScrollBarChanged, autoVerticalScrollBarChanged); | |
| 756 finalizeScrollDimensions(originalScrollOffset, autoHorizontalScrollBarChange d, autoVerticalScrollBarChanged); | |
| 757 } | |
| 758 | |
| 741 ScrollBehavior DeprecatedPaintLayerScrollableArea::scrollBehaviorStyle() const | 759 ScrollBehavior DeprecatedPaintLayerScrollableArea::scrollBehaviorStyle() const |
| 742 { | 760 { |
| 743 return box().style()->scrollBehavior(); | 761 return box().style()->scrollBehavior(); |
| 744 } | 762 } |
| 745 | 763 |
| 746 bool DeprecatedPaintLayerScrollableArea::hasHorizontalOverflow() const | 764 bool DeprecatedPaintLayerScrollableArea::hasHorizontalOverflow() const |
| 747 { | 765 { |
| 748 return pixelSnappedScrollWidth() > box().pixelSnappedClientWidth(); | 766 return pixelSnappedScrollWidth() > box().pixelSnappedClientWidth(); |
| 749 } | 767 } |
| 750 | 768 |
| (...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1451 return false; | 1469 return false; |
| 1452 | 1470 |
| 1453 LocalFrame* frame = box().frame(); | 1471 LocalFrame* frame = box().frame(); |
| 1454 if (!frame || !frame->isMainFrame() || !frame->settings()) | 1472 if (!frame || !frame->isMainFrame() || !frame->settings()) |
| 1455 return false; | 1473 return false; |
| 1456 | 1474 |
| 1457 return frame->settings()->viewportMetaEnabled(); | 1475 return frame->settings()->viewportMetaEnabled(); |
| 1458 } | 1476 } |
| 1459 | 1477 |
| 1460 } // namespace blink | 1478 } // namespace blink |
| OLD | NEW |