summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/ScrollableArea.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/ScrollableArea.cpp')
-rw-r--r--Source/WebCore/platform/ScrollableArea.cpp25
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