Chromium Code Reviews| Index: Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp |
| diff --git a/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp b/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp |
| index 75b2999646e092109c931114f7a27add34ba4c50..96514a631ad091cd0422521c64b1855b150cec43 100644 |
| --- a/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp |
| +++ b/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp |
| @@ -642,12 +642,35 @@ void DeprecatedPaintLayerScrollableArea::scrollToOffset(const DoubleSize& scroll |
| } |
| } |
| -void DeprecatedPaintLayerScrollableArea::updateAfterLayout() |
| +void DeprecatedPaintLayerScrollableArea::updateScrollDimensions(DoubleSize& scrollOffset, bool& autoHorizontalScrollBarChanged, bool& autoVerticalScrollBarChanged) |
| { |
| ASSERT(box().hasOverflowClip()); |
| - DoubleSize originalScrollOffset = adjustedScrollOffset(); |
| + scrollOffset = adjustedScrollOffset(); |
| computeScrollDimensions(); |
| + bool hasHorizontalOverflow = this->hasHorizontalOverflow(); |
| + bool hasVerticalOverflow = this->hasVerticalOverflow(); |
| + if (hasOverlayScrollbars()) { |
| + if (!scrollSize(HorizontalScrollbar)) |
| + setHasHorizontalScrollbar(false); |
| + if (!scrollSize(VerticalScrollbar)) |
| + setHasVerticalScrollbar(false); |
| + } |
| + |
| + // overflow:auto may need to lay out again if scrollbars got added/removed. |
| + autoHorizontalScrollBarChanged = box().hasAutoHorizontalScrollbar() && (hasHorizontalScrollbar() != hasHorizontalOverflow); |
| + autoVerticalScrollBarChanged = box().hasAutoVerticalScrollbar() && (hasVerticalScrollbar() != hasVerticalOverflow); |
| + if (!visualViewportSuppliesScrollbars() && (autoHorizontalScrollBarChanged || autoVerticalScrollBarChanged)) { |
| + if (box().hasAutoHorizontalScrollbar()) |
| + setHasHorizontalScrollbar(hasHorizontalOverflow); |
| + if (box().hasAutoVerticalScrollbar()) |
| + setHasVerticalScrollbar(hasVerticalOverflow); |
| + } |
| +} |
| + |
| +void DeprecatedPaintLayerScrollableArea::finalizeScrollDimensions(const DoubleSize& originalScrollOffset, bool autoHorizontalScrollBarChanged, bool autoVerticalScrollBarChanged) |
| +{ |
| + ASSERT(box().hasOverflowClip()); |
| // Layout may cause us to be at an invalid scroll position. In this case we need |
| // to pull our scroll offsets back to the max (or push them up to the min). |
| @@ -673,22 +696,8 @@ void DeprecatedPaintLayerScrollableArea::updateAfterLayout() |
| if (box().style()->overflowY() == OSCROLL && verticalScrollbar()) |
| verticalScrollbar()->setEnabled(hasVerticalOverflow); |
| } |
| - if (hasOverlayScrollbars()) { |
| - if (!scrollSize(HorizontalScrollbar)) |
| - setHasHorizontalScrollbar(false); |
| - if (!scrollSize(VerticalScrollbar)) |
| - setHasVerticalScrollbar(false); |
| - } |
| - // overflow:auto may need to lay out again if scrollbars got added/removed. |
| - bool autoHorizontalScrollBarChanged = box().hasAutoHorizontalScrollbar() && (hasHorizontalScrollbar() != hasHorizontalOverflow); |
| - bool autoVerticalScrollBarChanged = box().hasAutoVerticalScrollbar() && (hasVerticalScrollbar() != hasVerticalOverflow); |
| if (!visualViewportSuppliesScrollbars() && (autoHorizontalScrollBarChanged || autoVerticalScrollBarChanged)) { |
| - if (box().hasAutoHorizontalScrollbar()) |
| - setHasHorizontalScrollbar(hasHorizontalOverflow); |
| - if (box().hasAutoVerticalScrollbar()) |
| - setHasVerticalScrollbar(hasVerticalOverflow); |
| - |
| if (hasVerticalOverflow || hasHorizontalOverflow) |
| updateScrollCornerStyle(); |
| @@ -738,6 +747,15 @@ void DeprecatedPaintLayerScrollableArea::updateAfterLayout() |
| positionOverflowControls(); |
| } |
| +void DeprecatedPaintLayerScrollableArea::updateAfterLayout() |
| +{ |
| + DoubleSize originalScrollOffset; |
| + 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
|
| + bool autoVerticalScrollBarChanged; |
| + updateScrollDimensions(originalScrollOffset, autoHorizontalScrollBarChanged, autoVerticalScrollBarChanged); |
| + finalizeScrollDimensions(originalScrollOffset, autoHorizontalScrollBarChanged, autoVerticalScrollBarChanged); |
| +} |
| + |
| ScrollBehavior DeprecatedPaintLayerScrollableArea::scrollBehaviorStyle() const |
| { |
| return box().style()->scrollBehavior(); |