Index: ui/views/controls/separator.cc |
diff --git a/ui/views/controls/separator.cc b/ui/views/controls/separator.cc |
index 5ec611832bd1aa7758a4d86702fb74c4a781b7a9..9926b28c66d7a46b13418f7aee303c033b583f35 100644 |
--- a/ui/views/controls/separator.cc |
+++ b/ui/views/controls/separator.cc |
@@ -13,43 +13,28 @@ namespace views { |
// static |
const char Separator::kViewClassName[] = "Separator"; |
-// The separator size in pixels. |
-const int kSeparatorSize = 1; |
- |
-Separator::Separator(Orientation orientation) |
- : orientation_(orientation), |
- color_overridden_(false), |
- size_(kSeparatorSize) { |
- SetColorFromNativeTheme(); |
-} |
+// static |
+const int Separator::kThickness = 1; |
-Separator::~Separator() { |
-} |
+Separator::Separator() {} |
+ |
+Separator::~Separator() {} |
void Separator::SetColor(SkColor color) { |
- color_ = color; |
- color_overridden_ = true; |
+ overridden_color_ = color; |
SchedulePaint(); |
} |
-void Separator::SetPreferredSize(int size) { |
- if (size != size_) { |
- size_ = size; |
- PreferredSizeChanged(); |
- } |
-} |
- |
-void Separator::SetColorFromNativeTheme() { |
- color_ = GetNativeTheme()->GetSystemColor( |
- ui::NativeTheme::kColorId_SeparatorColor); |
+void Separator::SetPreferredHeight(int height) { |
+ preferred_height_ = height; |
+ PreferredSizeChanged(); |
} |
//////////////////////////////////////////////////////////////////////////////// |
// Separator, View overrides: |
gfx::Size Separator::GetPreferredSize() const { |
- gfx::Size size = |
- orientation_ == HORIZONTAL ? gfx::Size(1, size_) : gfx::Size(size_, 1); |
+ gfx::Size size(kThickness, preferred_height_); |
gfx::Insets insets = GetInsets(); |
size.Enlarge(insets.width(), insets.height()); |
return size; |
@@ -60,12 +45,15 @@ void Separator::GetAccessibleNodeData(ui::AXNodeData* node_data) { |
} |
void Separator::OnPaint(gfx::Canvas* canvas) { |
- canvas->FillRect(GetContentsBounds(), color_); |
-} |
- |
-void Separator::OnNativeThemeChanged(const ui::NativeTheme* theme) { |
- if (!color_overridden_) |
- SetColorFromNativeTheme(); |
+ SkColor color = overridden_color_ |
+ ? *overridden_color_ |
+ : GetNativeTheme()->GetSystemColor( |
+ ui::NativeTheme::kColorId_SeparatorColor); |
+ |
+ // The separator fills its bounds, but avoid filling partial pixels. |
+ float dsf = canvas->UndoDeviceScaleFactor(); |
+ gfx::RectF contents = gfx::ScaleRect(gfx::RectF(GetContentsBounds()), dsf); |
+ canvas->FillRect(gfx::ToEnclosedRect(contents), color); |
} |
const char* Separator::GetClassName() const { |