Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(277)

Unified Diff: ui/native_theme/native_theme_mac.mm

Issue 1671313002: MacViews: Overlay Scrollbars with Show/Hide Animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added comments and fixed nits Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698