Index: Source/core/frame/FrameView.cpp |
diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
index fead2c37d5aef382869754e821fde1e16084b94b..3231af4128ba49c0bec7a0c9b2f4ea177455900f 100644 |
--- a/Source/core/frame/FrameView.cpp |
+++ b/Source/core/frame/FrameView.cpp |
@@ -341,6 +341,28 @@ void FrameView::recalculateCustomScrollbarStyle() |
} |
} |
+void FrameView::invalidateAllCustomScrollbarsOnActiveChanged() |
+{ |
+ const ChildrenWidgetSet* viewChildren = children(); |
+ bool didStyleChange = false; |
+ for (const RefPtrWillBeMember<Widget>& child : *viewChildren) { |
+ Widget* widget = child.get(); |
+ if (widget->isFrameView()) { |
+ toFrameView(widget)->recalculateCustomScrollbarStyle(); |
+ if (toFrameView(widget)->hasCustomScrollbars()) |
rune
2014/12/10 08:29:32
hasCustomScrollbars() is traversing the whole widg
MuVen
2014/12/10 08:44:33
yes this is much simpler, I have verified all the
|
+ toFrameView(widget)->invalidateAllCustomScrollbarsOnActiveChanged(); |
+ } else if (widget->isScrollbar() && toScrollbar(widget)->isCustomScrollbar()) { |
+ toScrollbar(widget)->styleChanged(); |
+ didStyleChange = true; |
+ } |
+ } |
+ if (didStyleChange) { |
+ updateScrollbarGeometry(); |
+ updateScrollCorner(); |
+ positionScrollbarLayers(); |
+ } |
+} |
+ |
void FrameView::recalculateScrollbarOverlayStyle() |
{ |
ScrollbarOverlayStyle oldOverlayStyle = scrollbarOverlayStyle(); |