| Index: ui/native_theme/native_theme_mac.mm
|
| diff --git a/ui/native_theme/native_theme_mac.mm b/ui/native_theme/native_theme_mac.mm
|
| index 43eb1296316e424026f8bee6f435ea1696b25d8e..dfda092d948c8f252e50951a938d98b2d6f520d8 100644
|
| --- a/ui/native_theme/native_theme_mac.mm
|
| +++ b/ui/native_theme/native_theme_mac.mm
|
| @@ -122,6 +122,14 @@ SkColor NSSystemColorToSkColor(NSColor* color) {
|
| SkScalarRoundToInt(255.0 * components[0]));
|
| }
|
|
|
| +SkColor GetColorFromOverlayParams(
|
| + SkColor color,
|
| + ui::NativeTheme::OverlayParams overlay_params) {
|
| + return overlay_params.is_overlay
|
| + ? SkColorSetA(color, SkColorGetA(color) * overlay_params.alpha)
|
| + : color;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace ui {
|
| @@ -256,6 +264,8 @@ void NativeThemeMac::PaintScrollbarTrack(
|
| gradient_bounds[0].set(rect.x(), rect.y());
|
| gradient_bounds[1].set(rect.x(), rect.bottom());
|
| }
|
| +
|
| + // TODO(spqchan): Change the opacity of the track when it's overlayed.
|
| skia::RefPtr<SkShader> shader = skia::AdoptRef(
|
| SkGradientShader::CreateLinear(gradient_bounds,
|
| kScrollerTrackGradientColors,
|
| @@ -271,13 +281,15 @@ void NativeThemeMac::PaintScrollbarTrack(
|
| // Draw inner and outer line borders.
|
| if (part == kScrollbarVerticalTrack) {
|
| SkPaint paint;
|
| - paint.setColor(kScrollerTrackInnerBorderColor);
|
| + paint.setColor(GetColorFromOverlayParams(kScrollerTrackInnerBorderColor,
|
| + extra_params.overlay));
|
| canvas->drawRectCoords(track_rect.left(),
|
| track_rect.top(),
|
| track_rect.left() + kScrollerTrackBorderWidth,
|
| track_rect.bottom(),
|
| paint);
|
| - paint.setColor(kScrollerTrackOuterBorderColor);
|
| + paint.setColor(GetColorFromOverlayParams(kScrollerTrackOuterBorderColor,
|
| + extra_params.overlay));
|
| canvas->drawRectCoords(track_rect.right() - kScrollerTrackBorderWidth,
|
| track_rect.top(),
|
| track_rect.right(),
|
| @@ -285,13 +297,15 @@ void NativeThemeMac::PaintScrollbarTrack(
|
| paint);
|
| } else {
|
| SkPaint paint;
|
| - paint.setColor(kScrollerTrackInnerBorderColor);
|
| + paint.setColor(GetColorFromOverlayParams(kScrollerTrackInnerBorderColor,
|
| + extra_params.overlay));
|
| canvas->drawRectCoords(track_rect.left(),
|
| track_rect.top(),
|
| track_rect.right(),
|
| track_rect.top() + kScrollerTrackBorderWidth,
|
| paint);
|
| - paint.setColor(kScrollerTrackOuterBorderColor);
|
| + paint.setColor(GetColorFromOverlayParams(kScrollerTrackOuterBorderColor,
|
| + extra_params.overlay));
|
| canvas->drawRectCoords(track_rect.left(),
|
| track_rect.bottom() - kScrollerTrackBorderWidth,
|
| track_rect.right(),
|
| @@ -300,10 +314,12 @@ void NativeThemeMac::PaintScrollbarTrack(
|
| }
|
| }
|
|
|
| -void NativeThemeMac::PaintScrollbarThumb(SkCanvas* canvas,
|
| - Part part,
|
| - State state,
|
| - const gfx::Rect& rect) const {
|
| +void NativeThemeMac::PaintScrollbarThumb(
|
| + SkCanvas* canvas,
|
| + Part part,
|
| + State state,
|
| + const ScrollbarThumbExtraParams& extra_params,
|
| + const gfx::Rect& rect) const {
|
| gfx::Rect thumb_rect(rect);
|
| switch (part) {
|
| case kScrollbarHorizontalThumb:
|
| @@ -321,8 +337,11 @@ void NativeThemeMac::PaintScrollbarThumb(SkCanvas* canvas,
|
|
|
| SkPaint paint;
|
| paint.setAntiAlias(true);
|
| - paint.setColor(state == kHovered ? thumb_active_color_
|
| - : thumb_inactive_color_);
|
| +
|
| + SkColor thumb_color =
|
| + state == kHovered ? thumb_active_color_ : thumb_inactive_color_;
|
| + paint.setColor(GetColorFromOverlayParams(thumb_color, extra_params.overlay));
|
| +
|
| const SkScalar radius = std::min(rect.width(), rect.height());
|
| canvas->drawRoundRect(gfx::RectToSkRect(thumb_rect), radius, radius, paint);
|
| }
|
|
|