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 |