Index: third_party/WebKit/Source/platform/scroll/ScrollableArea.h |
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h |
index 2de87e1c4717c03d7d404e07f1f2173a8066f0e4..eb2188d991bef84d430ee3ae6369dca28dc90d9a 100644 |
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h |
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h |
@@ -109,8 +109,10 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
void mouseEnteredContentArea() const; |
void mouseExitedContentArea() const; |
void mouseMovedInContentArea() const; |
- void mouseEnteredScrollbar(Scrollbar&) const; |
- void mouseExitedScrollbar(Scrollbar&) const; |
+ void mouseEnteredScrollbar(Scrollbar&); |
+ void mouseExitedScrollbar(Scrollbar&); |
+ void mouseCapturedScrollbar(); |
+ void mouseReleasedScrollbar(); |
void contentAreaDidShow() const; |
void contentAreaDidHide() const; |
@@ -229,7 +231,6 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
virtual bool shouldSuspendScrollAnimations() const { return true; } |
virtual void scrollbarStyleChanged() {} |
- virtual void scrollbarVisibilityChanged() {} |
virtual bool scrollbarsCanBeActive() const = 0; |
// Returns the bounding box of this scrollable area, in the coordinate system |
@@ -258,7 +259,6 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
// Overlay scrollbars can "fade-out" when inactive. |
virtual bool scrollbarsHidden() const; |
virtual void setScrollbarsHidden(bool); |
- virtual void didChangeScrollbarsHidden(){}; |
// Returns true if the GraphicsLayer tree needs to be rebuilt. |
virtual bool updateAfterCompositingChange() { return false; } |
@@ -358,7 +358,7 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
EAGERLY_FINALIZE(); |
DECLARE_VIRTUAL_TRACE(); |
- virtual void clearScrollAnimators(); |
+ virtual void clearScrollableArea(); |
virtual ScrollAnchor* scrollAnchor() { return nullptr; } |
@@ -390,11 +390,20 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
m_verticalScrollbarNeedsPaintInvalidation = false; |
m_scrollCornerNeedsPaintInvalidation = false; |
} |
+ void showOverlayScrollbars(); |
+ |
+ // Called when scrollbar hides/shows for overlay scrollbars. This callback |
+ // shouldn't do any significant work as it can be called unexpectadly often |
+ // on Mac. This happens because painting code has to set alpha to 1, paint, |
+ // then reset to alpha, causing spurrious "visibilityChanged" calls. |
+ virtual void scrollbarVisibilityChanged() {} |
private: |
void programmaticScrollHelper(const ScrollOffset&, ScrollBehavior); |
void userScrollHelper(const ScrollOffset&, ScrollBehavior); |
+ void fadeOverlayScrollbarsTimerFired(TimerBase*); |
+ |
// This function should be overriden by subclasses to perform the actual |
// scroll of the content. |
virtual void updateScrollOffset(const ScrollOffset&, ScrollType) = 0; |
@@ -407,6 +416,8 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
mutable Member<ScrollAnimatorBase> m_scrollAnimator; |
mutable Member<ProgrammaticScrollAnimator> m_programmaticScrollAnimator; |
+ std::unique_ptr<Timer<ScrollableArea>> m_fadeOverlayScrollbarsTimer; |
+ |
unsigned m_scrollbarOverlayColorTheme : 2; |
unsigned m_scrollOriginChanged : 1; |
@@ -415,6 +426,7 @@ class PLATFORM_EXPORT ScrollableArea : public GarbageCollectedMixin { |
unsigned m_verticalScrollbarNeedsPaintInvalidation : 1; |
unsigned m_scrollCornerNeedsPaintInvalidation : 1; |
unsigned m_scrollbarsHidden : 1; |
+ unsigned m_scrollbarCaptured : 1; |
// There are 6 possible combinations of writing mode and direction. Scroll |
// origin will be non-zero in the x or y axis if there is any reversed |