diff options
Diffstat (limited to 'Source/WebCore/platform/ScrollableArea.cpp')
-rw-r--r-- | Source/WebCore/platform/ScrollableArea.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/Source/WebCore/platform/ScrollableArea.cpp b/Source/WebCore/platform/ScrollableArea.cpp index 00017bd..34cec9e 100644 --- a/Source/WebCore/platform/ScrollableArea.cpp +++ b/Source/WebCore/platform/ScrollableArea.cpp @@ -128,17 +128,26 @@ void ScrollableArea::setScrollOffsetFromAnimation(const IntPoint& offset) // Tell the derived class to scroll its contents. setScrollOffset(offset); - bool hasOverlayScrollbars = ScrollbarTheme::nativeTheme()->usesOverlayScrollbars(); + Scrollbar* verticalScrollbar = this->verticalScrollbar(); // Tell the scrollbars to update their thumb postions. if (Scrollbar* horizontalScrollbar = this->horizontalScrollbar()) { horizontalScrollbar->offsetDidChange(); - if (hasOverlayScrollbars) - horizontalScrollbar->invalidate(); + if (horizontalScrollbar->isOverlayScrollbar()) { + if (!verticalScrollbar) + horizontalScrollbar->invalidate(); + else { + // If there is both a horizontalScrollbar and a verticalScrollbar, + // then we must also invalidate the corner between them. + IntRect boundsAndCorner = horizontalScrollbar->boundsRect(); + boundsAndCorner.setWidth(boundsAndCorner.width() + verticalScrollbar->width()); + horizontalScrollbar->invalidateRect(boundsAndCorner); + } + } } - if (Scrollbar* verticalScrollbar = this->verticalScrollbar()) { + if (verticalScrollbar) { verticalScrollbar->offsetDidChange(); - if (hasOverlayScrollbars) + if (verticalScrollbar->isOverlayScrollbar()) verticalScrollbar->invalidate(); } } @@ -179,4 +188,10 @@ void ScrollableArea::willRemoveHorizontalScrollbar(Scrollbar* scrollbar) scrollAnimator()->willRemoveHorizontalScrollbar(scrollbar); } +bool ScrollableArea::hasOverlayScrollbars() const +{ + return (verticalScrollbar() && verticalScrollbar()->isOverlayScrollbar()) + || (horizontalScrollbar() && horizontalScrollbar()->isOverlayScrollbar()); +} + } // namespace WebCore |