| 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 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 } | 337 } |
| 338 | 338 |
| 339 int RenderLayerScrollableArea::scrollSize(ScrollbarOrientation orientation) cons
t | 339 int RenderLayerScrollableArea::scrollSize(ScrollbarOrientation orientation) cons
t |
| 340 { | 340 { |
| 341 IntSize scrollDimensions = maximumScrollPosition() - minimumScrollPosition()
; | 341 IntSize scrollDimensions = maximumScrollPosition() - minimumScrollPosition()
; |
| 342 return (orientation == HorizontalScrollbar) ? scrollDimensions.width() : scr
ollDimensions.height(); | 342 return (orientation == HorizontalScrollbar) ? scrollDimensions.width() : scr
ollDimensions.height(); |
| 343 } | 343 } |
| 344 | 344 |
| 345 void RenderLayerScrollableArea::setScrollOffset(const IntPoint& newScrollOffset) | 345 void RenderLayerScrollableArea::setScrollOffset(const IntPoint& newScrollOffset) |
| 346 { | 346 { |
| 347 if (!box().isMarquee()) { | 347 // Ensure that the dimensions will be computed if they need to be (for overf
low:hidden blocks). |
| 348 // Ensure that the dimensions will be computed if they need to be (for o
verflow:hidden blocks). | 348 if (m_scrollDimensionsDirty) |
| 349 if (m_scrollDimensionsDirty) | 349 computeScrollDimensions(); |
| 350 computeScrollDimensions(); | |
| 351 } | |
| 352 | 350 |
| 353 if (scrollOffset() == toIntSize(newScrollOffset)) | 351 if (scrollOffset() == toIntSize(newScrollOffset)) |
| 354 return; | 352 return; |
| 355 | 353 |
| 356 m_scrollOffset = toIntSize(newScrollOffset); | 354 m_scrollOffset = toIntSize(newScrollOffset); |
| 357 | 355 |
| 358 LocalFrame* frame = box().frame(); | 356 LocalFrame* frame = box().frame(); |
| 359 ASSERT(frame); | 357 ASSERT(frame); |
| 360 | 358 |
| 361 RefPtr<FrameView> frameView = box().frameView(); | 359 RefPtr<FrameView> frameView = box().frameView(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 381 // The caret rect needs to be invalidated after scrolling | 379 // The caret rect needs to be invalidated after scrolling |
| 382 frame->selection().setCaretRectNeedsUpdate(); | 380 frame->selection().setCaretRectNeedsUpdate(); |
| 383 | 381 |
| 384 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); | 382 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); |
| 385 | 383 |
| 386 quadForFakeMouseMoveEvent = paintInvalidationContainer->localToAbsoluteQuad(
quadForFakeMouseMoveEvent); | 384 quadForFakeMouseMoveEvent = paintInvalidationContainer->localToAbsoluteQuad(
quadForFakeMouseMoveEvent); |
| 387 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); | 385 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); |
| 388 | 386 |
| 389 bool requiresPaintInvalidation = true; | 387 bool requiresPaintInvalidation = true; |
| 390 | 388 |
| 391 if (!box().isMarquee() && box().view()->compositor()->inCompositingMode()) { | 389 if (box().view()->compositor()->inCompositingMode()) { |
| 392 // Hits in virtual/gpu/fast/canvas/canvas-scroll-path-into-view.html. | 390 // Hits in virtual/gpu/fast/canvas/canvas-scroll-path-into-view.html. |
| 393 DisableCompositingQueryAsserts disabler; | 391 DisableCompositingQueryAsserts disabler; |
| 394 bool onlyScrolledCompositedLayers = scrollsOverflow() | 392 bool onlyScrolledCompositedLayers = scrollsOverflow() |
| 395 && !layer()->hasVisibleNonLayerContent() | 393 && !layer()->hasVisibleNonLayerContent() |
| 396 && !layer()->hasNonCompositedChild() | 394 && !layer()->hasNonCompositedChild() |
| 397 && !layer()->hasBlockSelectionGapBounds() | 395 && !layer()->hasBlockSelectionGapBounds() |
| 398 && box().style()->backgroundLayers().attachment() != LocalBackground
Attachment; | 396 && box().style()->backgroundLayers().attachment() != LocalBackground
Attachment; |
| 399 | 397 |
| 400 if (usesCompositedScrolling() || onlyScrolledCompositedLayers) | 398 if (usesCompositedScrolling() || onlyScrolledCompositedLayers) |
| 401 requiresPaintInvalidation = false; | 399 requiresPaintInvalidation = false; |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 scrollToOffsetWithoutAnimation(-scrollOrigin() + newScrollOffset); | 567 scrollToOffsetWithoutAnimation(-scrollOrigin() + newScrollOffset); |
| 570 } | 568 } |
| 571 | 569 |
| 572 void RenderLayerScrollableArea::updateAfterLayout() | 570 void RenderLayerScrollableArea::updateAfterLayout() |
| 573 { | 571 { |
| 574 m_scrollDimensionsDirty = true; | 572 m_scrollDimensionsDirty = true; |
| 575 IntSize originalScrollOffset = adjustedScrollOffset(); | 573 IntSize originalScrollOffset = adjustedScrollOffset(); |
| 576 | 574 |
| 577 computeScrollDimensions(); | 575 computeScrollDimensions(); |
| 578 | 576 |
| 579 if (!box().isMarquee()) { | 577 // Layout may cause us to be at an invalid scroll position. In this case we
need |
| 580 // Layout may cause us to be at an invalid scroll position. In this case
we need | 578 // to pull our scroll offsets back to the max (or push them up to the min). |
| 581 // to pull our scroll offsets back to the max (or push them up to the mi
n). | 579 IntSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); |
| 582 IntSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); | 580 if (clampedScrollOffset != adjustedScrollOffset()) |
| 583 if (clampedScrollOffset != adjustedScrollOffset()) | 581 scrollToOffset(clampedScrollOffset); |
| 584 scrollToOffset(clampedScrollOffset); | |
| 585 } | |
| 586 | 582 |
| 587 if (originalScrollOffset != adjustedScrollOffset()) | 583 if (originalScrollOffset != adjustedScrollOffset()) |
| 588 scrollToOffsetWithoutAnimation(-scrollOrigin() + adjustedScrollOffset())
; | 584 scrollToOffsetWithoutAnimation(-scrollOrigin() + adjustedScrollOffset())
; |
| 589 | 585 |
| 590 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); | 586 bool hasHorizontalOverflow = this->hasHorizontalOverflow(); |
| 591 bool hasVerticalOverflow = this->hasVerticalOverflow(); | 587 bool hasVerticalOverflow = this->hasVerticalOverflow(); |
| 592 | 588 |
| 593 { | 589 { |
| 594 // Hits in compositing/overflow/automatically-opt-into-composited-scroll
ing-after-style-change.html. | 590 // Hits in compositing/overflow/automatically-opt-into-composited-scroll
ing-after-style-change.html. |
| 595 DisableCompositingQueryAsserts disabler; | 591 DisableCompositingQueryAsserts disabler; |
| (...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1470 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) | 1466 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) |
| 1471 { | 1467 { |
| 1472 // We only want to track the topmost scroll child for scrollable areas with | 1468 // We only want to track the topmost scroll child for scrollable areas with |
| 1473 // overlay scrollbars. | 1469 // overlay scrollbars. |
| 1474 if (!hasOverlayScrollbars()) | 1470 if (!hasOverlayScrollbars()) |
| 1475 return; | 1471 return; |
| 1476 m_nextTopmostScrollChild = scrollChild; | 1472 m_nextTopmostScrollChild = scrollChild; |
| 1477 } | 1473 } |
| 1478 | 1474 |
| 1479 } // namespace blink | 1475 } // namespace blink |
| OLD | NEW |