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

Unified Diff: ui/gfx/native_theme_base.cc

Issue 10107019: Fixes bug where button borders are not always painted in High DPI mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes as requested Created 8 years, 8 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/native_theme_base.cc
diff --git a/ui/gfx/native_theme_base.cc b/ui/gfx/native_theme_base.cc
index e786dee61d7e4d91e854e1183069e8a2596d1e98..61683822e92d053f4925d703ee0033e3ebe9621e 100644
--- a/ui/gfx/native_theme_base.cc
+++ b/ui/gfx/native_theme_base.cc
@@ -489,9 +489,9 @@ void NativeThemeBase::PaintButton(SkCanvas* canvas,
const gfx::Rect& rect,
const ButtonExtraParams& button) const {
SkPaint paint;
- SkRect skrect;
const int kRight = rect.right();
const int kBottom = rect.bottom();
+ SkRect skrect = SkRect::MakeLTRB(rect.x(), rect.y(), kRight, kBottom);
SkColor base_color = button.background_color;
color_utils::HSL base_hsl;
@@ -504,20 +504,10 @@ void NativeThemeBase::PaintButton(SkCanvas* canvas,
// If the button is too small, fallback to drawing a single, solid color
if (rect.width() < 5 || rect.height() < 5) {
paint.setColor(base_color);
- skrect.set(rect.x(), rect.y(), kRight, kBottom);
canvas->drawRect(skrect, paint);
return;
}
- if (button.has_border) {
- const int kBorderAlpha = state == kHovered ? 0x80 : 0x55;
- paint.setARGB(kBorderAlpha, 0, 0, 0);
- canvas->drawLine(rect.x() + 1, rect.y(), kRight - 1, rect.y(), paint);
- canvas->drawLine(kRight - 1, rect.y() + 1, kRight - 1, kBottom - 1, paint);
- canvas->drawLine(rect.x() + 1, kBottom - 1, kRight - 1, kBottom - 1, paint);
- canvas->drawLine(rect.x(), rect.y() + 1, rect.x(), kBottom - 1, paint);
- }
-
paint.setColor(SK_ColorBLACK);
const int kLightEnd = state == kPressed ? 1 : 0;
const int kDarkEnd = !kLightEnd;
@@ -531,23 +521,20 @@ void NativeThemeBase::PaintButton(SkCanvas* canvas,
SkShader* shader = SkGradientShader::CreateLinear(
gradient_bounds, colors, NULL, 2, SkShader::kClamp_TileMode, NULL);
paint.setStyle(SkPaint::kFill_Style);
+ paint.setAntiAlias(true);
paint.setShader(shader);
shader->unref();
- if (button.has_border) {
- skrect.set(rect.x() + 1, rect.y() + 1, kRight - 1, kBottom - 1);
- } else {
- skrect.set(rect.x(), rect.y(), kRight, kBottom);
- }
- canvas->drawRect(skrect, paint);
+ canvas->drawRoundRect(skrect, SkIntToScalar(1), SkIntToScalar(1), paint);
paint.setShader(NULL);
if (button.has_border) {
- paint.setColor(BrightenColor(base_hsl, SkColorGetA(base_color), -0.0588));
- canvas->drawPoint(rect.x() + 1, rect.y() + 1, paint);
- canvas->drawPoint(kRight - 2, rect.y() + 1, paint);
- canvas->drawPoint(rect.x() + 1, kBottom - 2, paint);
- canvas->drawPoint(kRight - 2, kBottom - 2, paint);
+ const int kBorderAlpha = state == kHovered ? 0x80 : 0x55;
+ paint.setStyle(SkPaint::kStroke_Style);
+ paint.setStrokeWidth(SkIntToScalar(1));
+ paint.setARGB(kBorderAlpha, 0, 0, 0);
+ skrect.inset(SkFloatToScalar(.5f), SkFloatToScalar(.5f));
+ canvas->drawRoundRect(skrect, SkIntToScalar(1), SkIntToScalar(1), paint);
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698