| 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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 return (orientation == HorizontalScrollbar) ? scrollDimensions.width() : scr
ollDimensions.height(); | 343 return (orientation == HorizontalScrollbar) ? scrollDimensions.width() : scr
ollDimensions.height(); |
| 344 } | 344 } |
| 345 | 345 |
| 346 void RenderLayerScrollableArea::setScrollOffset(const IntPoint& newScrollOffset) | 346 void RenderLayerScrollableArea::setScrollOffset(const IntPoint& newScrollOffset) |
| 347 { | 347 { |
| 348 setScrollOffset(DoublePoint(newScrollOffset)); | 348 setScrollOffset(DoublePoint(newScrollOffset)); |
| 349 } | 349 } |
| 350 | 350 |
| 351 void RenderLayerScrollableArea::setScrollOffset(const DoublePoint& newScrollOffs
et) | 351 void RenderLayerScrollableArea::setScrollOffset(const DoublePoint& newScrollOffs
et) |
| 352 { | 352 { |
| 353 if (!box().isMarquee()) { | 353 // Ensure that the dimensions will be computed if they need to be (for overf
low:hidden blocks). |
| 354 // Ensure that the dimensions will be computed if they need to be (for o
verflow:hidden blocks). | 354 if (m_scrollDimensionsDirty) |
| 355 if (m_scrollDimensionsDirty) | 355 computeScrollDimensions(); |
| 356 computeScrollDimensions(); | |
| 357 } | |
| 358 | 356 |
| 359 if (scrollOffset() == toDoubleSize(newScrollOffset)) | 357 if (scrollOffset() == toDoubleSize(newScrollOffset)) |
| 360 return; | 358 return; |
| 361 | 359 |
| 362 m_scrollOffset = toDoubleSize(newScrollOffset); | 360 m_scrollOffset = toDoubleSize(newScrollOffset); |
| 363 | 361 |
| 364 LocalFrame* frame = box().frame(); | 362 LocalFrame* frame = box().frame(); |
| 365 ASSERT(frame); | 363 ASSERT(frame); |
| 366 | 364 |
| 367 RefPtrWillBeRawPtr<FrameView> frameView = box().frameView(); | 365 RefPtrWillBeRawPtr<FrameView> frameView = box().frameView(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 387 // The caret rect needs to be invalidated after scrolling | 385 // The caret rect needs to be invalidated after scrolling |
| 388 frame->selection().setCaretRectNeedsUpdate(); | 386 frame->selection().setCaretRectNeedsUpdate(); |
| 389 | 387 |
| 390 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); | 388 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); |
| 391 | 389 |
| 392 quadForFakeMouseMoveEvent = paintInvalidationContainer->localToAbsoluteQuad(
quadForFakeMouseMoveEvent); | 390 quadForFakeMouseMoveEvent = paintInvalidationContainer->localToAbsoluteQuad(
quadForFakeMouseMoveEvent); |
| 393 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); | 391 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); |
| 394 | 392 |
| 395 bool requiresPaintInvalidation = true; | 393 bool requiresPaintInvalidation = true; |
| 396 | 394 |
| 397 if (!box().isMarquee() && box().view()->compositor()->inCompositingMode()) { | 395 if (box().view()->compositor()->inCompositingMode()) { |
| 398 // Hits in virtual/gpu/fast/canvas/canvas-scroll-path-into-view.html. | 396 // Hits in virtual/gpu/fast/canvas/canvas-scroll-path-into-view.html. |
| 399 DisableCompositingQueryAsserts disabler; | 397 DisableCompositingQueryAsserts disabler; |
| 400 bool onlyScrolledCompositedLayers = scrollsOverflow() | 398 bool onlyScrolledCompositedLayers = scrollsOverflow() |
| 401 && !layer()->hasVisibleNonLayerContent() | 399 && !layer()->hasVisibleNonLayerContent() |
| 402 && !layer()->hasNonCompositedChild() | 400 && !layer()->hasNonCompositedChild() |
| 403 && !layer()->hasBlockSelectionGapBounds() | 401 && !layer()->hasBlockSelectionGapBounds() |
| 404 && box().style()->backgroundLayers().attachment() != LocalBackground
Attachment; | 402 && box().style()->backgroundLayers().attachment() != LocalBackground
Attachment; |
| 405 | 403 |
| 406 if (usesCompositedScrolling() || onlyScrolledCompositedLayers) | 404 if (usesCompositedScrolling() || onlyScrolledCompositedLayers) |
| 407 requiresPaintInvalidation = false; | 405 requiresPaintInvalidation = false; |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 } | 581 } |
| 584 } | 582 } |
| 585 | 583 |
| 586 void RenderLayerScrollableArea::updateAfterLayout() | 584 void RenderLayerScrollableArea::updateAfterLayout() |
| 587 { | 585 { |
| 588 m_scrollDimensionsDirty = true; | 586 m_scrollDimensionsDirty = true; |
| 589 DoubleSize originalScrollOffset = adjustedScrollOffset(); | 587 DoubleSize originalScrollOffset = adjustedScrollOffset(); |
| 590 | 588 |
| 591 computeScrollDimensions(); | 589 computeScrollDimensions(); |
| 592 | 590 |
| 593 if (!box().isMarquee()) { | 591 // Layout may cause us to be at an invalid scroll position. In this case we
need |
| 594 // Layout may cause us to be at an invalid scroll position. In this case
we need | 592 // to pull our scroll offsets back to the max (or push them up to the min). |
| 595 // to pull our scroll offsets back to the max (or push them up to the mi
n). | 593 DoubleSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); |
| 596 DoubleSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset(
)); | 594 if (clampedScrollOffset != adjustedScrollOffset()) |
| 597 if (clampedScrollOffset != adjustedScrollOffset()) | 595 scrollToOffset(clampedScrollOffset); |
| 598 scrollToOffset(clampedScrollOffset); | |
| 599 } | |
| 600 | 596 |
| 601 if (originalScrollOffset != adjustedScrollOffset()) { | 597 if (originalScrollOffset != adjustedScrollOffset()) { |
| 602 DoublePoint origin(scrollOrigin()); | 598 DoublePoint origin(scrollOrigin()); |
| 603 scrollToOffsetWithoutAnimation(toFloatPoint(-origin + adjustedScrollOffs
et())); | 599 scrollToOffsetWithoutAnimation(toFloatPoint(-origin + adjustedScrollOffs
et())); |
| 604 } | 600 } |
| 605 | 601 |
| 606 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); | 602 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); |
| 607 bool hasVerticalOverflow = this->hasVerticalOverflow(); | 603 bool hasVerticalOverflow = this->hasVerticalOverflow(); |
| 608 | 604 |
| 609 { | 605 { |
| (...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1492 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) | 1488 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) |
| 1493 { | 1489 { |
| 1494 // We only want to track the topmost scroll child for scrollable areas with | 1490 // We only want to track the topmost scroll child for scrollable areas with |
| 1495 // overlay scrollbars. | 1491 // overlay scrollbars. |
| 1496 if (!hasOverlayScrollbars()) | 1492 if (!hasOverlayScrollbars()) |
| 1497 return; | 1493 return; |
| 1498 m_nextTopmostScrollChild = scrollChild; | 1494 m_nextTopmostScrollChild = scrollChild; |
| 1499 } | 1495 } |
| 1500 | 1496 |
| 1501 } // namespace blink | 1497 } // namespace blink |
| OLD | NEW |