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(); |