| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010, Google Inc. All rights reserved. | 2 * Copyright (c) 2010, Google Inc. All rights reserved. |
| 3 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. | 3 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 */ | 30 */ |
| 31 | 31 |
| 32 #include "config.h" | 32 #include "config.h" |
| 33 #include "platform/scroll/ScrollableArea.h" | 33 #include "platform/scroll/ScrollableArea.h" |
| 34 | 34 |
| 35 #include "platform/HostWindow.h" | 35 #include "platform/HostWindow.h" |
| 36 #include "platform/Logging.h" | 36 #include "platform/Logging.h" |
| 37 #include "platform/TraceEvent.h" |
| 37 #include "platform/graphics/GraphicsLayer.h" | 38 #include "platform/graphics/GraphicsLayer.h" |
| 38 #include "platform/geometry/FloatPoint.h" | 39 #include "platform/geometry/FloatPoint.h" |
| 39 #include "platform/scroll/ProgrammaticScrollAnimator.h" | 40 #include "platform/scroll/ProgrammaticScrollAnimator.h" |
| 41 #include "platform/scroll/ScrollbarStateTransitionAnimator.h" |
| 40 #include "platform/scroll/ScrollbarTheme.h" | 42 #include "platform/scroll/ScrollbarTheme.h" |
| 41 #include "wtf/PassOwnPtr.h" | 43 #include "wtf/PassOwnPtr.h" |
| 42 | 44 |
| 43 #include "platform/TraceEvent.h" | |
| 44 | 45 |
| 45 static const int kPixelsPerLineStep = 40; | 46 static const int kPixelsPerLineStep = 40; |
| 46 static const float kMinFractionToStepWhenPaging = 0.875f; | 47 static const float kMinFractionToStepWhenPaging = 0.875f; |
| 47 | 48 |
| 48 namespace blink { | 49 namespace blink { |
| 49 | 50 |
| 50 struct SameSizeAsScrollableArea { | 51 struct SameSizeAsScrollableArea { |
| 51 virtual ~SameSizeAsScrollableArea(); | 52 virtual ~SameSizeAsScrollableArea(); |
| 52 IntRect scrollbarDamage[2]; | 53 IntRect scrollbarDamage[2]; |
| 53 void* pointer; | 54 void* pointer; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 { | 103 { |
| 103 if (!m_animators) | 104 if (!m_animators) |
| 104 m_animators = adoptPtr(new ScrollableAreaAnimators); | 105 m_animators = adoptPtr(new ScrollableAreaAnimators); |
| 105 | 106 |
| 106 if (!m_animators->programmaticScrollAnimator) | 107 if (!m_animators->programmaticScrollAnimator) |
| 107 m_animators->programmaticScrollAnimator = ProgrammaticScrollAnimator::cr
eate(const_cast<ScrollableArea*>(this)); | 108 m_animators->programmaticScrollAnimator = ProgrammaticScrollAnimator::cr
eate(const_cast<ScrollableArea*>(this)); |
| 108 | 109 |
| 109 return m_animators->programmaticScrollAnimator.get(); | 110 return m_animators->programmaticScrollAnimator.get(); |
| 110 } | 111 } |
| 111 | 112 |
| 113 ScrollbarStateTransitionAnimator* ScrollableArea::scrollbarStateTransitionAnimat
or() const |
| 114 { |
| 115 if (!m_animators) |
| 116 m_animators = adoptPtr(new ScrollableAreaAnimators); |
| 117 |
| 118 if (!m_animators->scrollbarStateTransitionAnimator) |
| 119 m_animators->scrollbarStateTransitionAnimator = ScrollbarStateTransition
Animator::create(const_cast<ScrollableArea*>(this)); |
| 120 |
| 121 return m_animators->scrollbarStateTransitionAnimator.get(); |
| 122 } |
| 123 |
| 124 bool ScrollableArea::isDuringStateTransitionAnimation() const |
| 125 { |
| 126 return hasOverlayScrollbars() && existingScrollbarStateTransitionAnimator()
&& existingScrollbarStateTransitionAnimator()->isDuringStateTransitionAnimation(
); |
| 127 } |
| 128 |
| 129 void ScrollableArea::stateTransitionInProgress() |
| 130 { |
| 131 if (isDuringStateTransitionAnimation()) { |
| 132 double progress = existingScrollbarStateTransitionAnimator()->stateTrans
itionProgress(); |
| 133 blink::WebThemeEngine::State startState = existingScrollbarStateTransiti
onAnimator()->stateTransitionStartState(); |
| 134 blink::WebThemeEngine::State endState = existingScrollbarStateTransition
Animator()->stateTransitionEndState(); |
| 135 |
| 136 if (Scrollbar* verticalScrollbar = this->verticalScrollbar()) { |
| 137 verticalScrollbar->updateStateTransitionData(startState, endState, p
rogress); |
| 138 } |
| 139 |
| 140 if (Scrollbar* horizontalScrollbar = this->horizontalScrollbar()) { |
| 141 horizontalScrollbar->updateStateTransitionData(startState, endState,
progress); |
| 142 } |
| 143 } |
| 144 } |
| 145 |
| 112 void ScrollableArea::setScrollOrigin(const IntPoint& origin) | 146 void ScrollableArea::setScrollOrigin(const IntPoint& origin) |
| 113 { | 147 { |
| 114 if (m_scrollOrigin != origin) { | 148 if (m_scrollOrigin != origin) { |
| 115 m_scrollOrigin = origin; | 149 m_scrollOrigin = origin; |
| 116 m_scrollOriginChanged = true; | 150 m_scrollOriginChanged = true; |
| 117 } | 151 } |
| 118 } | 152 } |
| 119 | 153 |
| 120 GraphicsLayer* ScrollableArea::layerForContainer() const | 154 GraphicsLayer* ScrollableArea::layerForContainer() const |
| 121 { | 155 { |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 | 328 |
| 295 void ScrollableArea::mouseMovedInContentArea() const | 329 void ScrollableArea::mouseMovedInContentArea() const |
| 296 { | 330 { |
| 297 if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) | 331 if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) |
| 298 scrollAnimator->mouseMovedInContentArea(); | 332 scrollAnimator->mouseMovedInContentArea(); |
| 299 } | 333 } |
| 300 | 334 |
| 301 void ScrollableArea::mouseEnteredScrollbar(Scrollbar* scrollbar) const | 335 void ScrollableArea::mouseEnteredScrollbar(Scrollbar* scrollbar) const |
| 302 { | 336 { |
| 303 scrollAnimator()->mouseEnteredScrollbar(scrollbar); | 337 scrollAnimator()->mouseEnteredScrollbar(scrollbar); |
| 338 if (ScrollbarStateTransitionAnimator* animator = scrollbarStateTransitionAni
mator()) |
| 339 animator->mouseEnteredScrollbar(scrollbar); |
| 304 } | 340 } |
| 305 | 341 |
| 306 void ScrollableArea::mouseExitedScrollbar(Scrollbar* scrollbar) const | 342 void ScrollableArea::mouseExitedScrollbar(Scrollbar* scrollbar) const |
| 307 { | 343 { |
| 308 scrollAnimator()->mouseExitedScrollbar(scrollbar); | 344 scrollAnimator()->mouseExitedScrollbar(scrollbar); |
| 345 if (ScrollbarStateTransitionAnimator* animator = scrollbarStateTransitionAni
mator()) |
| 346 animator->mouseExitedScrollbar(scrollbar); |
| 309 } | 347 } |
| 310 | 348 |
| 311 void ScrollableArea::contentAreaDidShow() const | 349 void ScrollableArea::contentAreaDidShow() const |
| 312 { | 350 { |
| 313 if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) | 351 if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) |
| 314 scrollAnimator->contentAreaDidShow(); | 352 scrollAnimator->contentAreaDidShow(); |
| 315 } | 353 } |
| 316 | 354 |
| 317 void ScrollableArea::contentAreaDidHide() const | 355 void ScrollableArea::contentAreaDidHide() const |
| 318 { | 356 { |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgram
maticScrollAnimator()) | 473 if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgram
maticScrollAnimator()) |
| 436 programmaticScrollAnimator->tickAnimation(monotonicTime); | 474 programmaticScrollAnimator->tickAnimation(monotonicTime); |
| 437 } | 475 } |
| 438 | 476 |
| 439 void ScrollableArea::cancelProgrammaticScrollAnimation() | 477 void ScrollableArea::cancelProgrammaticScrollAnimation() |
| 440 { | 478 { |
| 441 if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgram
maticScrollAnimator()) | 479 if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgram
maticScrollAnimator()) |
| 442 programmaticScrollAnimator->cancelAnimation(); | 480 programmaticScrollAnimator->cancelAnimation(); |
| 443 } | 481 } |
| 444 | 482 |
| 483 void ScrollableArea::serviceScrollbarAnimations() |
| 484 { |
| 485 if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) |
| 486 scrollAnimator->serviceScrollAnimations(); |
| 487 if (ScrollbarStateTransitionAnimator* animator = existingScrollbarStateTrans
itionAnimator()) |
| 488 animator->serviceAnimations(); |
| 489 } |
| 490 |
| 445 IntRect ScrollableArea::visibleContentRect(IncludeScrollbarsInRect scrollbarIncl
usion) const | 491 IntRect ScrollableArea::visibleContentRect(IncludeScrollbarsInRect scrollbarIncl
usion) const |
| 446 { | 492 { |
| 447 int verticalScrollbarWidth = 0; | 493 int verticalScrollbarWidth = 0; |
| 448 int horizontalScrollbarHeight = 0; | 494 int horizontalScrollbarHeight = 0; |
| 449 | 495 |
| 450 if (scrollbarInclusion == IncludeScrollbars) { | 496 if (scrollbarInclusion == IncludeScrollbars) { |
| 451 if (Scrollbar* verticalBar = verticalScrollbar()) | 497 if (Scrollbar* verticalBar = verticalScrollbar()) |
| 452 verticalScrollbarWidth = !verticalBar->isOverlayScrollbar() ? vertic
alBar->width() : 0; | 498 verticalScrollbarWidth = !verticalBar->isOverlayScrollbar() ? vertic
alBar->width() : 0; |
| 453 if (Scrollbar* horizontalBar = horizontalScrollbar()) | 499 if (Scrollbar* horizontalBar = horizontalScrollbar()) |
| 454 horizontalScrollbarHeight = !horizontalBar->isOverlayScrollbar() ? h
orizontalBar->height() : 0; | 500 horizontalScrollbarHeight = !horizontalBar->isOverlayScrollbar() ? h
orizontalBar->height() : 0; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 483 { | 529 { |
| 484 return scrollSize(orientation); | 530 return scrollSize(orientation); |
| 485 } | 531 } |
| 486 | 532 |
| 487 float ScrollableArea::pixelStep(ScrollbarOrientation) const | 533 float ScrollableArea::pixelStep(ScrollbarOrientation) const |
| 488 { | 534 { |
| 489 return 1; | 535 return 1; |
| 490 } | 536 } |
| 491 | 537 |
| 492 } // namespace blink | 538 } // namespace blink |
| OLD | NEW |