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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 static const float kMinFractionToStepWhenPaging = 0.875f; | 43 static const float kMinFractionToStepWhenPaging = 0.875f; |
44 | 44 |
45 namespace blink { | 45 namespace blink { |
46 | 46 |
47 struct SameSizeAsScrollableArea { | 47 struct SameSizeAsScrollableArea { |
48 virtual ~SameSizeAsScrollableArea(); | 48 virtual ~SameSizeAsScrollableArea(); |
49 #if ENABLE(ASSERT) | 49 #if ENABLE(ASSERT) |
50 VerifyEagerFinalization verifyEager; | 50 VerifyEagerFinalization verifyEager; |
51 #endif | 51 #endif |
52 Member<void*> pointer[2]; | 52 Member<void*> pointer[2]; |
53 unsigned bitfields : 16; | 53 unsigned bitfields : 17; |
54 IntPoint origin; | 54 IntPoint origin; |
55 }; | 55 }; |
56 | 56 |
57 static_assert(sizeof(ScrollableArea) == sizeof(SameSizeAsScrollableArea), | 57 static_assert(sizeof(ScrollableArea) == sizeof(SameSizeAsScrollableArea), |
58 "ScrollableArea should stay small"); | 58 "ScrollableArea should stay small"); |
59 | 59 |
60 int ScrollableArea::pixelsPerLineStep(HostWindow* host) { | 60 int ScrollableArea::pixelsPerLineStep(HostWindow* host) { |
61 if (!host) | 61 if (!host) |
62 return kPixelsPerLineStep; | 62 return kPixelsPerLineStep; |
63 return host->windowToViewportScalar(kPixelsPerLineStep); | 63 return host->windowToViewportScalar(kPixelsPerLineStep); |
64 } | 64 } |
65 | 65 |
66 float ScrollableArea::minFractionToStepWhenPaging() { | 66 float ScrollableArea::minFractionToStepWhenPaging() { |
67 return kMinFractionToStepWhenPaging; | 67 return kMinFractionToStepWhenPaging; |
68 } | 68 } |
69 | 69 |
70 int ScrollableArea::maxOverlapBetweenPages() { | 70 int ScrollableArea::maxOverlapBetweenPages() { |
71 static int maxOverlapBetweenPages = | 71 static int maxOverlapBetweenPages = |
72 ScrollbarTheme::theme().maxOverlapBetweenPages(); | 72 ScrollbarTheme::theme().maxOverlapBetweenPages(); |
73 return maxOverlapBetweenPages; | 73 return maxOverlapBetweenPages; |
74 } | 74 } |
75 | 75 |
76 ScrollableArea::ScrollableArea() | 76 ScrollableArea::ScrollableArea() |
77 : m_scrollbarOverlayStyle(ScrollbarOverlayStyleDefault), | 77 : m_scrollbarOverlayStyle(ScrollbarOverlayStyleDefault), |
78 m_scrollOriginChanged(false), | 78 m_scrollOriginChanged(false), |
79 m_horizontalScrollbarNeedsPaintInvalidation(false), | 79 m_horizontalScrollbarNeedsPaintInvalidation(false), |
80 m_verticalScrollbarNeedsPaintInvalidation(false), | 80 m_verticalScrollbarNeedsPaintInvalidation(false), |
81 m_scrollCornerNeedsPaintInvalidation(false) {} | 81 m_scrollCornerNeedsPaintInvalidation(false), |
| 82 m_scrollbarsHidden(false) {} |
82 | 83 |
83 ScrollableArea::~ScrollableArea() {} | 84 ScrollableArea::~ScrollableArea() {} |
84 | 85 |
85 void ScrollableArea::clearScrollAnimators() { | 86 void ScrollableArea::clearScrollAnimators() { |
86 #if OS(MACOSX) | 87 #if OS(MACOSX) |
87 if (m_scrollAnimator) | 88 if (m_scrollAnimator) |
88 m_scrollAnimator->dispose(); | 89 m_scrollAnimator->dispose(); |
89 #endif | 90 #endif |
90 m_scrollAnimator.clear(); | 91 m_scrollAnimator.clear(); |
91 m_programmaticScrollAnimator.clear(); | 92 m_programmaticScrollAnimator.clear(); |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
521 // scheduled on the compositor. | 522 // scheduled on the compositor. |
522 // TODO(ymalik): We have a non-transient "main thread scrolling reason" | 523 // TODO(ymalik): We have a non-transient "main thread scrolling reason" |
523 // that doesn't actually cause shouldScrollOnMainThread() to be true. | 524 // that doesn't actually cause shouldScrollOnMainThread() to be true. |
524 // This is confusing and should be cleaned up. | 525 // This is confusing and should be cleaned up. |
525 return !!(reasons & | 526 return !!(reasons & |
526 ~MainThreadScrollingReason::kHandlingScrollFromMainThread); | 527 ~MainThreadScrollingReason::kHandlingScrollFromMainThread); |
527 } | 528 } |
528 return true; | 529 return true; |
529 } | 530 } |
530 | 531 |
| 532 bool ScrollableArea::scrollbarsHidden() const { |
| 533 return hasOverlayScrollbars() && m_scrollbarsHidden; |
| 534 } |
| 535 |
| 536 void ScrollableArea::setScrollbarsHidden(bool hidden) { |
| 537 if (m_scrollbarsHidden == hidden) |
| 538 return; |
| 539 m_scrollbarsHidden = hidden; |
| 540 didChangeScrollbarsHidden(); |
| 541 } |
| 542 |
531 IntRect ScrollableArea::visibleContentRect( | 543 IntRect ScrollableArea::visibleContentRect( |
532 IncludeScrollbarsInRect scrollbarInclusion) const { | 544 IncludeScrollbarsInRect scrollbarInclusion) const { |
533 int scrollbarWidth = | 545 int scrollbarWidth = |
534 scrollbarInclusion == IncludeScrollbars ? verticalScrollbarWidth() : 0; | 546 scrollbarInclusion == IncludeScrollbars ? verticalScrollbarWidth() : 0; |
535 int scrollbarHeight = | 547 int scrollbarHeight = |
536 scrollbarInclusion == IncludeScrollbars ? horizontalScrollbarHeight() : 0; | 548 scrollbarInclusion == IncludeScrollbars ? horizontalScrollbarHeight() : 0; |
537 | 549 |
538 return enclosingIntRect( | 550 return enclosingIntRect( |
539 IntRect(scrollOffset().width(), scrollOffset().height(), | 551 IntRect(scrollOffset().width(), scrollOffset().height(), |
540 std::max(0, visibleWidth() + scrollbarWidth), | 552 std::max(0, visibleWidth() + scrollbarWidth), |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 return IntSize(std::max(0, size.width() - verticalScrollbarWidth()), | 602 return IntSize(std::max(0, size.width() - verticalScrollbarWidth()), |
591 std::max(0, size.height() - horizontalScrollbarHeight())); | 603 std::max(0, size.height() - horizontalScrollbarHeight())); |
592 } | 604 } |
593 | 605 |
594 DEFINE_TRACE(ScrollableArea) { | 606 DEFINE_TRACE(ScrollableArea) { |
595 visitor->trace(m_scrollAnimator); | 607 visitor->trace(m_scrollAnimator); |
596 visitor->trace(m_programmaticScrollAnimator); | 608 visitor->trace(m_programmaticScrollAnimator); |
597 } | 609 } |
598 | 610 |
599 } // namespace blink | 611 } // namespace blink |
OLD | NEW |