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@gmail.com> | 9 * Christian Biesinger <cbiesinger@gmail.com> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 1389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1400 element->setInlineStyleProperty(CSSPropertyHeight, roundToInt(baseHeight + difference.height()), CSSPrimitiveValue::UnitType::Pixels); | 1400 element->setInlineStyleProperty(CSSPropertyHeight, roundToInt(baseHeight + difference.height()), CSSPrimitiveValue::UnitType::Pixels); |
| 1401 } | 1401 } |
| 1402 | 1402 |
| 1403 document.updateStyleAndLayout(); | 1403 document.updateStyleAndLayout(); |
| 1404 | 1404 |
| 1405 // FIXME (Radar 4118564): We should also autoscroll the window as necessary to keep the point under the cursor in view. | 1405 // FIXME (Radar 4118564): We should also autoscroll the window as necessary to keep the point under the cursor in view. |
| 1406 } | 1406 } |
| 1407 | 1407 |
| 1408 LayoutRect PaintLayerScrollableArea::scrollIntoView(const LayoutRect& rect, cons t ScrollAlignment& alignX, const ScrollAlignment& alignY, ScrollType scrollType) | 1408 LayoutRect PaintLayerScrollableArea::scrollIntoView(const LayoutRect& rect, cons t ScrollAlignment& alignX, const ScrollAlignment& alignY, ScrollType scrollType) |
| 1409 { | 1409 { |
| 1410 if (maximumScrollPosition() == minimumScrollPosition()) | |
| 1411 return rect; | |
| 1412 | |
| 1410 LayoutRect localExposeRect(box().absoluteToLocalQuad(FloatQuad(FloatRect(rec t)), UseTransforms).boundingBox()); | 1413 LayoutRect localExposeRect(box().absoluteToLocalQuad(FloatQuad(FloatRect(rec t)), UseTransforms).boundingBox()); |
| 1411 localExposeRect.move(-box().borderLeft(), -box().borderTop()); | 1414 localExposeRect.move(-box().borderLeft(), -box().borderTop()); |
| 1412 LayoutRect layerBounds(LayoutPoint(), LayoutSize(box().clientWidth(), box(). clientHeight())); | 1415 LayoutRect layerBounds(LayoutPoint(), LayoutSize(box().clientWidth(), box(). clientHeight())); |
| 1413 LayoutRect r = ScrollAlignment::getRectToExpose(layerBounds, localExposeRect , alignX, alignY); | 1416 LayoutRect r = ScrollAlignment::getRectToExpose(layerBounds, localExposeRect , alignX, alignY); |
| 1414 | 1417 |
| 1415 DoublePoint clampedScrollPosition = clampScrollPosition(scrollPositionDouble () + roundedIntSize(r.location())); | 1418 DoublePoint clampedScrollPosition = clampScrollPosition(scrollPositionDouble () + roundedIntSize(r.location())); |
| 1416 if (clampedScrollPosition == scrollPositionDouble()) | 1419 if (clampedScrollPosition == scrollPositionDouble()) |
| 1417 return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(intersec tion(layerBounds, localExposeRect))), UseTransforms).boundingBox()); | 1420 return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(intersec tion(layerBounds, localExposeRect))), UseTransforms).boundingBox()); |
|
bokan
2016/09/13 15:32:29
Sorry, probably should have asked this before but
sunyunjia
2016/09/13 16:00:44
As I investigated, for my test case and the websit
| |
| 1418 | 1421 |
| 1419 DoubleSize oldScrollOffset = adjustedScrollOffset(); | 1422 DoubleSize oldScrollOffset = adjustedScrollOffset(); |
| 1420 scrollToPosition(clampedScrollPosition, ScrollOffsetUnclamped, ScrollBehavio rInstant, scrollType); | 1423 scrollToPosition(clampedScrollPosition, ScrollOffsetUnclamped, ScrollBehavio rInstant, scrollType); |
| 1421 DoubleSize scrollOffsetDifference = adjustedScrollOffset() - oldScrollOffset ; | 1424 DoubleSize scrollOffsetDifference = adjustedScrollOffset() - oldScrollOffset ; |
| 1422 localExposeRect.move(-LayoutSize(scrollOffsetDifference)); | 1425 localExposeRect.move(-LayoutSize(scrollOffsetDifference)); |
| 1423 return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(intersection (layerBounds, localExposeRect))), UseTransforms).boundingBox()); | 1426 return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(intersection (layerBounds, localExposeRect))), UseTransforms).boundingBox()); |
| 1424 } | 1427 } |
| 1425 | 1428 |
| 1426 void PaintLayerScrollableArea::updateScrollableAreaSet(bool hasOverflow) | 1429 void PaintLayerScrollableArea::updateScrollableAreaSet(bool hasOverflow) |
| 1427 { | 1430 { |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1768 | 1771 |
| 1769 void PaintLayerScrollableArea::DelayScrollPositionClampScope::clampScrollableAre as() | 1772 void PaintLayerScrollableArea::DelayScrollPositionClampScope::clampScrollableAre as() |
| 1770 { | 1773 { |
| 1771 for (auto& scrollableArea : *s_needsClamp) | 1774 for (auto& scrollableArea : *s_needsClamp) |
| 1772 scrollableArea->clampScrollPositionsAfterLayout(); | 1775 scrollableArea->clampScrollPositionsAfterLayout(); |
| 1773 delete s_needsClamp; | 1776 delete s_needsClamp; |
| 1774 s_needsClamp = nullptr; | 1777 s_needsClamp = nullptr; |
| 1775 } | 1778 } |
| 1776 | 1779 |
| 1777 } // namespace blink | 1780 } // namespace blink |
| OLD | NEW |