Index: third_party/WebKit/Source/core/layout/LayoutScrollbarPart.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutScrollbarPart.cpp b/third_party/WebKit/Source/core/layout/LayoutScrollbarPart.cpp |
index 0af88ce7cbfc9e4f9584c6c62475cbb79e0f4add..87294efd1a6af8d8c583f3bf12bb108dd8822061 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutScrollbarPart.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutScrollbarPart.cpp |
@@ -31,6 +31,7 @@ |
#include "core/layout/LayoutScrollbar.h" |
#include "core/layout/LayoutScrollbarTheme.h" |
#include "core/layout/LayoutView.h" |
+#include "core/paint/PaintLayerScrollableArea.h" |
#include "platform/LengthFunctions.h" |
namespace blink { |
@@ -179,24 +180,14 @@ void LayoutScrollbarPart::styleDidChange(StyleDifference diff, const ComputedSty |
clearPositionedState(); |
setFloating(false); |
setHasOverflowClip(false); |
- if (oldStyle && m_scrollbar && m_part != NoPart && (diff.needsPaintInvalidation() || diff.needsLayout())) |
- m_scrollbar->theme()->invalidatePart(m_scrollbar, m_part); |
+ if (oldStyle && (diff.needsPaintInvalidation() || diff.needsLayout())) |
+ setNeedsPaintInvalidation(); |
} |
void LayoutScrollbarPart::imageChanged(WrappedImagePtr image, const IntRect* rect) |
{ |
- if (m_scrollbar && m_part != NoPart) { |
- m_scrollbar->theme()->invalidatePart(m_scrollbar, m_part); |
- } else { |
- if (FrameView* frameView = view()->frameView()) { |
- if (frameView->isFrameViewScrollCorner(this)) { |
- frameView->invalidateScrollCorner(frameView->scrollCornerRect()); |
- return; |
- } |
- } |
- |
- LayoutBlock::imageChanged(image, rect); |
- } |
+ setNeedsPaintInvalidation(); |
+ LayoutBlock::imageChanged(image, rect); |
} |
LayoutObject* LayoutScrollbarPart::layoutObjectOwningScrollbar() const |
@@ -204,4 +195,24 @@ LayoutObject* LayoutScrollbarPart::layoutObjectOwningScrollbar() const |
return (!m_scrollbar) ? nullptr : m_scrollbar->owningLayoutObject(); |
} |
+void LayoutScrollbarPart::setNeedsPaintInvalidation() |
+{ |
+ if (m_scrollbar) { |
+ m_scrollbar->setNeedsPaintInvalidation(); |
+ return; |
+ } |
+ |
+ // This LayoutScrollbarPart is a scroll corner or a resizer. |
+ ASSERT(m_part == NoPart); |
+ if (FrameView* frameView = view()->frameView()) { |
+ if (frameView->isFrameViewScrollCorner(this)) { |
+ frameView->setScrollCornerNeedsPaintInvalidation(); |
+ return; |
+ } |
+ } |
+ |
+ // This LayoutScrollbarPart belongs to a PaintLayerScrollableArea. |
+ toLayoutBox(parent())->scrollableArea()->setScrollCornerNeedsPaintInvalidation(); |
+} |
+ |
} |