Index: ui/views/controls/combobox/combobox.cc |
diff --git a/ui/views/controls/combobox/combobox.cc b/ui/views/controls/combobox/combobox.cc |
index 983a8077e9d600bf041a8cf351ce53fe477cdc5b..bb8623a26f631e183c6b62289581e95a1336fc19 100644 |
--- a/ui/views/controls/combobox/combobox.cc |
+++ b/ui/views/controls/combobox/combobox.cc |
@@ -406,10 +406,12 @@ Combobox::Combobox(ui::ComboboxModel* model, Style style) |
#endif |
UpdateBorder(); |
- // set_background() takes ownership but takes a raw pointer. |
- std::unique_ptr<Background> b = |
- PlatformStyle::CreateComboboxBackground(GetArrowContainerWidth()); |
- set_background(b.release()); |
+ if (UseMd()) { |
+ // set_background() takes ownership but takes a raw pointer. |
+ std::unique_ptr<Background> b = |
+ PlatformStyle::CreateComboboxBackground(GetArrowContainerWidth()); |
+ set_background(b.release()); |
+ } |
// Initialize the button images. |
Button::ButtonState button_states[] = { |
@@ -537,7 +539,19 @@ void Combobox::Layout() { |
void Combobox::OnEnabledChanged() { |
View::OnEnabledChanged(); |
- arrow_image_ = PlatformStyle::CreateComboboxArrow(enabled(), style_); |
+ if (!UseMd()) |
+ arrow_image_ = PlatformStyle::CreateComboboxArrow(enabled(), style_); |
+} |
+ |
+void Combobox::OnNativeThemeChanged(const ui::NativeTheme* theme) { |
+ if (!UseMd()) |
+ return; |
+ |
+ set_background(Background::CreateBackgroundPainter( |
+ true, Painter::CreateSolidRoundRectPainter( |
+ theme->GetSystemColor( |
+ ui::NativeTheme::kColorId_TextfieldDefaultBackground), |
+ FocusableBorder::kCornerRadiusDp))); |
} |
int Combobox::GetRowCount() { |
@@ -770,8 +784,10 @@ void Combobox::PaintText(gfx::Canvas* canvas) { |
int y = insets.top(); |
int text_height = height() - insets.height(); |
SkColor text_color = GetNativeTheme()->GetSystemColor( |
- enabled() ? ui::NativeTheme::kColorId_LabelEnabledColor : |
- ui::NativeTheme::kColorId_LabelDisabledColor); |
+ UseMd() ? (enabled() ? ui::NativeTheme::kColorId_TextfieldDefaultColor |
+ : ui::NativeTheme::kColorId_TextfieldReadOnlyColor) |
+ : (enabled() ? ui::NativeTheme::kColorId_LabelEnabledColor |
+ : ui::NativeTheme::kColorId_LabelDisabledColor)); |
DCHECK_GE(selected_index_, 0); |
DCHECK_LT(selected_index_, model()->GetItemCount()); |
@@ -815,8 +831,13 @@ void Combobox::PaintText(gfx::Canvas* canvas) { |
path.rLineTo(height, -height); |
path.close(); |
SkPaint paint; |
- paint.setColor(GetNativeTheme()->GetSystemColor( |
- ui::NativeTheme::kColorId_ButtonEnabledColor)); |
+ SkColor arrow_color = GetNativeTheme()->GetSystemColor( |
+ ui::NativeTheme::kColorId_ButtonEnabledColor); |
+ // TODO(estade): share this disabled alpha value with other places that use |
+ // it. |
+ if (!enabled()) |
+ arrow_color = SkColorSetA(arrow_color, 0x61); |
+ paint.setColor(arrow_color); |
paint.setAntiAlias(true); |
canvas->DrawPath(path, paint); |
} else { |