Chromium Code Reviews| Index: ui/views/painter.cc |
| diff --git a/ui/views/painter.cc b/ui/views/painter.cc |
| index 8d4fc45aa28fc232919e09836fc5a3b92b81fc78..e2ac629c3f116eb891f4a3dcd30a1c874e0c851e 100644 |
| --- a/ui/views/painter.cc |
| +++ b/ui/views/painter.cc |
| @@ -14,6 +14,7 @@ |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/geometry/insets.h" |
| +#include "ui/gfx/geometry/insets_f.h" |
| #include "ui/gfx/geometry/point.h" |
| #include "ui/gfx/geometry/rect_f.h" |
| #include "ui/gfx/geometry/size.h" |
| @@ -119,7 +120,9 @@ void DashedFocusPainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) { |
| class SolidFocusPainter : public Painter { |
| public: |
| - SolidFocusPainter(SkColor color, const gfx::Insets& insets); |
| + SolidFocusPainter(SkColor color, |
| + SkScalar thickness, |
| + const gfx::InsetsF& insets); |
| ~SolidFocusPainter() override; |
| // Painter: |
| @@ -128,16 +131,16 @@ class SolidFocusPainter : public Painter { |
| private: |
| const SkColor color_; |
| - const gfx::Insets insets_; |
| + const SkScalar thickness_; |
| + const gfx::InsetsF insets_; |
| DISALLOW_COPY_AND_ASSIGN(SolidFocusPainter); |
| }; |
| SolidFocusPainter::SolidFocusPainter(SkColor color, |
| - const gfx::Insets& insets) |
| - : color_(color), |
| - insets_(insets) { |
| -} |
| + SkScalar thickness, |
| + const gfx::InsetsF& insets) |
| + : color_(color), thickness_(thickness), insets_(insets) {} |
| SolidFocusPainter::~SolidFocusPainter() { |
| } |
| @@ -147,9 +150,9 @@ gfx::Size SolidFocusPainter::GetMinimumSize() const { |
| } |
| void SolidFocusPainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) { |
| - gfx::Rect rect(size); |
| + gfx::RectF rect((gfx::Rect(size))); |
| rect.Inset(insets_); |
| - canvas->DrawSolidFocusRect(rect, color_); |
| + canvas->DrawSolidFocusRect(rect, color_, thickness_); |
| } |
| // GradientPainter ------------------------------------------------------------ |
| @@ -356,7 +359,22 @@ std::unique_ptr<Painter> Painter::CreateDashedFocusPainterWithInsets( |
| std::unique_ptr<Painter> Painter::CreateSolidFocusPainter( |
| SkColor color, |
| const gfx::Insets& insets) { |
| - return base::MakeUnique<SolidFocusPainter>(color, insets); |
| + // Before Canvas::DrawSolidFocusRect correctly inset the rect's bounds based |
| + // on the thickness, callers had to add 1 to the bottom and right insets. |
| + // Subtract that here so it works the same way with the new |
| + // Canvas::DrawSolidFocusRect. |
| + const gfx::Insets corrected_insets = insets - gfx::Insets(0, 0, 1, 1); |
|
sky
2016/11/28 21:27:31
Ick. But I assume this is going to be nuked.
Evan Stade
2016/11/29 02:04:13
yea. It's only used by the message center at this
|
| + return base::MakeUnique<SolidFocusPainter>(color, SkIntToScalar(1), |
| + corrected_insets); |
| +} |
| + |
| +// static |
| +std::unique_ptr<Painter> Painter::CreateSolidFocusPainter( |
| + SkColor color, |
| + float thickness, |
| + const gfx::InsetsF& insets) { |
| + return base::MakeUnique<SolidFocusPainter>(color, SkFloatToScalar(thickness), |
| + insets); |
| } |
| // HorizontalPainter ---------------------------------------------------------- |