Index: third_party/WebKit/Source/platform/scroll/ScrollbarThemeMacOverlayAPI.mm |
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeMacOverlayAPI.mm b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeMacOverlayAPI.mm |
index cc19ac0d51a57ae4864d573fd73ef0b1f91e37a7..58d8fb6a2e7868dabc3936e49940749bf4a8b492 100644 |
--- a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeMacOverlayAPI.mm |
+++ b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeMacOverlayAPI.mm |
@@ -133,7 +133,7 @@ void ScrollbarThemeMacOverlayAPI::setNewPainterForScrollbar(ScrollbarThemeClient |
updateScrollbarOverlayStyle(scrollbar); |
} |
-ScrollbarPainter ScrollbarThemeMacOverlayAPI::painterForScrollbar(const ScrollbarThemeClient* scrollbar) |
+ScrollbarPainter ScrollbarThemeMacOverlayAPI::painterForScrollbar(const ScrollbarThemeClient* scrollbar) const |
{ |
return [scrollbarPainterMap()->get(const_cast<ScrollbarThemeClient*>(scrollbar)).get() painter]; |
} |
@@ -155,8 +155,13 @@ void ScrollbarThemeMacOverlayAPI::paintTrackBackground(GraphicsContext* context, |
[scrollbarPainter setEnabled:scrollbar->enabled()]; |
[scrollbarPainter setBoundsSize: NSSizeFromCGSize(frameRect.size)]; |
+ CGFloat oldTrackAlpha = [scrollbarPainter trackAlpha]; |
+ [scrollbarPainter setTrackAlpha:1]; |
+ |
NSRect trackRect = NSMakeRect(0, 0, frameRect.size.width, frameRect.size.height); |
[scrollbarPainter drawKnobSlotInRect:trackRect highlight:NO]; |
+ |
+ [scrollbarPainter setTrackAlpha:oldTrackAlpha]; |
} |
void ScrollbarThemeMacOverlayAPI::paintThumb(GraphicsContext* context, const ScrollbarThemeClient* scrollbar, const IntRect& rect) { |
@@ -179,21 +184,32 @@ void ScrollbarThemeMacOverlayAPI::paintThumb(GraphicsContext* context, const Scr |
[scrollbarPainter setBoundsSize:NSSizeFromCGSize(rect.size())]; |
[scrollbarPainter setDoubleValue:0]; |
[scrollbarPainter setKnobProportion:1]; |
+ |
+ CGFloat oldKnobAlpha = [scrollbarPainter knobAlpha]; |
+ [scrollbarPainter setKnobAlpha:1]; |
+ |
if (scrollbar->enabled()) |
[scrollbarPainter drawKnob]; |
// If this state is not set, then moving the cursor over the scrollbar area will only cause the |
// scrollbar to engorge when moved over the top of the scrollbar area. |
[scrollbarPainter setBoundsSize: NSSizeFromCGSize(scrollbar->frameRect().size())]; |
+ [scrollbarPainter setKnobAlpha:oldKnobAlpha]; |
} |
int ScrollbarThemeMacOverlayAPI::scrollbarThickness(ScrollbarControlSize controlSize) |
{ |
NSControlSize nsControlSize = static_cast<NSControlSize>(controlSize); |
ScrollbarPainter scrollbarPainter = [NSClassFromString(@"NSScrollerImp") scrollerImpWithStyle:recommendedScrollerStyle() controlSize:nsControlSize horizontal:NO replacingScrollerImp:nil]; |
- if (supportsExpandedScrollbars()) |
+ BOOL wasExpanded = NO; |
+ if (supportsExpandedScrollbars()) { |
+ wasExpanded = [scrollbarPainter isExpanded]; |
[scrollbarPainter setExpanded:YES]; |
- return [scrollbarPainter trackBoxWidth]; |
+ } |
+ int thickness = [scrollbarPainter trackBoxWidth]; |
+ if (supportsExpandedScrollbars()) |
+ [scrollbarPainter setExpanded:wasExpanded]; |
+ return thickness; |
} |
bool ScrollbarThemeMacOverlayAPI::usesOverlayScrollbars() const |
@@ -260,5 +276,15 @@ void ScrollbarThemeMacOverlayAPI::updateEnabledState(const ScrollbarThemeClient* |
[painterForScrollbar(scrollbar) setEnabled:scrollbar->enabled()]; |
} |
+float ScrollbarThemeMacOverlayAPI::trackOpacity(const ScrollbarThemeClient* scrollbar) const { |
+ ScrollbarPainter scrollbarPainter = painterForScrollbar(scrollbar); |
+ return [scrollbarPainter trackAlpha]; |
+} |
+ |
+float ScrollbarThemeMacOverlayAPI::thumbOpacity(const ScrollbarThemeClient* scrollbar) const { |
+ ScrollbarPainter scrollbarPainter = painterForScrollbar(scrollbar); |
+ return [scrollbarPainter knobAlpha]; |
+} |
+ |
} // namespace blink |