Index: ui/views/controls/textfield/textfield.cc |
diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc |
index 68aa01ec3bd832958bcc74db80c22734a5f3398c..669adbcf2027047044bec12165ef24bbbb43d446 100644 |
--- a/ui/views/controls/textfield/textfield.cc |
+++ b/ui/views/controls/textfield/textfield.cc |
@@ -245,6 +245,10 @@ Textfield::Textfield() |
use_default_text_color_(true), |
background_color_(SK_ColorWHITE), |
use_default_background_color_(true), |
+ selection_text_color_(SK_ColorWHITE), |
+ use_default_selection_text_color_(true), |
+ selection_background_color_(SK_ColorBLUE), |
+ use_default_selection_background_color_(true), |
placeholder_text_color_(kDefaultPlaceholderTextColor), |
text_input_type_(ui::TEXT_INPUT_TYPE_TEXT), |
performing_user_action_(false), |
@@ -371,6 +375,48 @@ void Textfield::UseDefaultBackgroundColor() { |
UpdateBackgroundColor(); |
} |
+SkColor Textfield::GetSelectionTextColor() const { |
+ return use_default_selection_text_color_ ? |
+ GetNativeTheme()->GetSystemColor( |
+ ui::NativeTheme::kColorId_TextfieldSelectionColor) : |
+ selection_text_color_; |
+} |
+ |
+void Textfield::SetSelectionTextColor(SkColor color) { |
+ selection_text_color_ = color; |
+ use_default_selection_text_color_ = false; |
+ GetRenderText()->set_selection_color(GetSelectionTextColor()); |
+ SchedulePaint(); |
+} |
+ |
+void Textfield::UseDefaultSelectionTextColor() { |
+ use_default_selection_text_color_ = true; |
+ GetRenderText()->set_selection_color(GetSelectionTextColor()); |
+ SchedulePaint(); |
+} |
+ |
+SkColor Textfield::GetSelectionBackgroundColor() const { |
+ return use_default_selection_background_color_ ? |
+ GetNativeTheme()->GetSystemColor( |
+ ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused) : |
+ selection_background_color_; |
+} |
+ |
+void Textfield::SetSelectionBackgroundColor(SkColor color) { |
+ selection_background_color_ = color; |
+ use_default_selection_background_color_ = false; |
+ GetRenderText()->set_selection_background_focused_color( |
+ GetSelectionBackgroundColor()); |
+ SchedulePaint(); |
+} |
+ |
+void Textfield::UseDefaultSelectionBackgroundColor() { |
+ use_default_selection_background_color_ = true; |
+ GetRenderText()->set_selection_background_focused_color( |
+ GetSelectionBackgroundColor()); |
+ SchedulePaint(); |
+} |
+ |
bool Textfield::GetCursorEnabled() const { |
return GetRenderText()->cursor_enabled(); |
} |
@@ -901,11 +947,9 @@ void Textfield::OnNativeThemeChanged(const ui::NativeTheme* theme) { |
render_text->SetColor(GetTextColor()); |
UpdateBackgroundColor(); |
render_text->set_cursor_color(GetTextColor()); |
- render_text->set_selection_color(theme->GetSystemColor( |
- ui::NativeTheme::kColorId_TextfieldSelectionColor)); |
- render_text->set_selection_background_focused_color(theme->GetSystemColor( |
- ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused)); |
- |
+ render_text->set_selection_color(GetSelectionTextColor()); |
+ render_text->set_selection_background_focused_color( |
+ GetSelectionBackgroundColor()); |
} |
//////////////////////////////////////////////////////////////////////////////// |