OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/views/controls/textfield/textfield.h" | 5 #include "ui/views/controls/textfield/textfield.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "grit/ui_strings.h" | 10 #include "grit/ui_strings.h" |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 238 |
239 Textfield::Textfield() | 239 Textfield::Textfield() |
240 : model_(new TextfieldModel(this)), | 240 : model_(new TextfieldModel(this)), |
241 controller_(NULL), | 241 controller_(NULL), |
242 read_only_(false), | 242 read_only_(false), |
243 default_width_in_chars_(0), | 243 default_width_in_chars_(0), |
244 text_color_(SK_ColorBLACK), | 244 text_color_(SK_ColorBLACK), |
245 use_default_text_color_(true), | 245 use_default_text_color_(true), |
246 background_color_(SK_ColorWHITE), | 246 background_color_(SK_ColorWHITE), |
247 use_default_background_color_(true), | 247 use_default_background_color_(true), |
| 248 selection_text_color_(SK_ColorWHITE), |
| 249 use_default_selection_text_color_(true), |
| 250 selection_background_color_(SK_ColorBLUE), |
| 251 use_default_selection_background_color_(true), |
248 placeholder_text_color_(kDefaultPlaceholderTextColor), | 252 placeholder_text_color_(kDefaultPlaceholderTextColor), |
249 text_input_type_(ui::TEXT_INPUT_TYPE_TEXT), | 253 text_input_type_(ui::TEXT_INPUT_TYPE_TEXT), |
250 performing_user_action_(false), | 254 performing_user_action_(false), |
251 skip_input_method_cancel_composition_(false), | 255 skip_input_method_cancel_composition_(false), |
252 cursor_visible_(false), | 256 cursor_visible_(false), |
253 drop_cursor_visible_(false), | 257 drop_cursor_visible_(false), |
254 initiating_drag_(false), | 258 initiating_drag_(false), |
255 aggregated_clicks_(0), | 259 aggregated_clicks_(0), |
256 weak_ptr_factory_(this) { | 260 weak_ptr_factory_(this) { |
257 set_context_menu_controller(this); | 261 set_context_menu_controller(this); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 background_color_ = color; | 368 background_color_ = color; |
365 use_default_background_color_ = false; | 369 use_default_background_color_ = false; |
366 UpdateBackgroundColor(); | 370 UpdateBackgroundColor(); |
367 } | 371 } |
368 | 372 |
369 void Textfield::UseDefaultBackgroundColor() { | 373 void Textfield::UseDefaultBackgroundColor() { |
370 use_default_background_color_ = true; | 374 use_default_background_color_ = true; |
371 UpdateBackgroundColor(); | 375 UpdateBackgroundColor(); |
372 } | 376 } |
373 | 377 |
| 378 SkColor Textfield::GetSelectionTextColor() const { |
| 379 return use_default_selection_text_color_ ? |
| 380 GetNativeTheme()->GetSystemColor( |
| 381 ui::NativeTheme::kColorId_TextfieldSelectionColor) : |
| 382 selection_text_color_; |
| 383 } |
| 384 |
| 385 void Textfield::SetSelectionTextColor(SkColor color) { |
| 386 selection_text_color_ = color; |
| 387 use_default_selection_text_color_ = false; |
| 388 GetRenderText()->set_selection_color(GetSelectionTextColor()); |
| 389 SchedulePaint(); |
| 390 } |
| 391 |
| 392 void Textfield::UseDefaultSelectionTextColor() { |
| 393 use_default_selection_text_color_ = true; |
| 394 GetRenderText()->set_selection_color(GetSelectionTextColor()); |
| 395 SchedulePaint(); |
| 396 } |
| 397 |
| 398 SkColor Textfield::GetSelectionBackgroundColor() const { |
| 399 return use_default_selection_background_color_ ? |
| 400 GetNativeTheme()->GetSystemColor( |
| 401 ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused) : |
| 402 selection_background_color_; |
| 403 } |
| 404 |
| 405 void Textfield::SetSelectionBackgroundColor(SkColor color) { |
| 406 selection_background_color_ = color; |
| 407 use_default_selection_background_color_ = false; |
| 408 GetRenderText()->set_selection_background_focused_color( |
| 409 GetSelectionBackgroundColor()); |
| 410 SchedulePaint(); |
| 411 } |
| 412 |
| 413 void Textfield::UseDefaultSelectionBackgroundColor() { |
| 414 use_default_selection_background_color_ = true; |
| 415 GetRenderText()->set_selection_background_focused_color( |
| 416 GetSelectionBackgroundColor()); |
| 417 SchedulePaint(); |
| 418 } |
| 419 |
374 bool Textfield::GetCursorEnabled() const { | 420 bool Textfield::GetCursorEnabled() const { |
375 return GetRenderText()->cursor_enabled(); | 421 return GetRenderText()->cursor_enabled(); |
376 } | 422 } |
377 | 423 |
378 void Textfield::SetCursorEnabled(bool enabled) { | 424 void Textfield::SetCursorEnabled(bool enabled) { |
379 GetRenderText()->SetCursorEnabled(enabled); | 425 GetRenderText()->SetCursorEnabled(enabled); |
380 } | 426 } |
381 | 427 |
382 const gfx::FontList& Textfield::GetFontList() const { | 428 const gfx::FontList& Textfield::GetFontList() const { |
383 return GetRenderText()->font_list(); | 429 return GetRenderText()->font_list(); |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 | 940 |
895 gfx::Point Textfield::GetKeyboardContextMenuLocation() { | 941 gfx::Point Textfield::GetKeyboardContextMenuLocation() { |
896 return GetCaretBounds().bottom_right(); | 942 return GetCaretBounds().bottom_right(); |
897 } | 943 } |
898 | 944 |
899 void Textfield::OnNativeThemeChanged(const ui::NativeTheme* theme) { | 945 void Textfield::OnNativeThemeChanged(const ui::NativeTheme* theme) { |
900 gfx::RenderText* render_text = GetRenderText(); | 946 gfx::RenderText* render_text = GetRenderText(); |
901 render_text->SetColor(GetTextColor()); | 947 render_text->SetColor(GetTextColor()); |
902 UpdateBackgroundColor(); | 948 UpdateBackgroundColor(); |
903 render_text->set_cursor_color(GetTextColor()); | 949 render_text->set_cursor_color(GetTextColor()); |
904 render_text->set_selection_color(theme->GetSystemColor( | 950 render_text->set_selection_color(GetSelectionTextColor()); |
905 ui::NativeTheme::kColorId_TextfieldSelectionColor)); | 951 render_text->set_selection_background_focused_color( |
906 render_text->set_selection_background_focused_color(theme->GetSystemColor( | 952 GetSelectionBackgroundColor()); |
907 ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused)); | |
908 | |
909 } | 953 } |
910 | 954 |
911 //////////////////////////////////////////////////////////////////////////////// | 955 //////////////////////////////////////////////////////////////////////////////// |
912 // Textfield, TextfieldModel::Delegate overrides: | 956 // Textfield, TextfieldModel::Delegate overrides: |
913 | 957 |
914 void Textfield::OnCompositionTextConfirmedOrCleared() { | 958 void Textfield::OnCompositionTextConfirmedOrCleared() { |
915 if (!skip_input_method_cancel_composition_) | 959 if (!skip_input_method_cancel_composition_) |
916 GetInputMethod()->CancelComposition(this); | 960 GetInputMethod()->CancelComposition(this); |
917 } | 961 } |
918 | 962 |
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1681 const size_t length = selection_clipboard_text.length(); | 1725 const size_t length = selection_clipboard_text.length(); |
1682 range = gfx::Range(range.start() + length, range.end() + length); | 1726 range = gfx::Range(range.start() + length, range.end() + length); |
1683 } | 1727 } |
1684 model_->MoveCursorTo(gfx::SelectionModel(range, affinity)); | 1728 model_->MoveCursorTo(gfx::SelectionModel(range, affinity)); |
1685 UpdateAfterChange(true, true); | 1729 UpdateAfterChange(true, true); |
1686 OnAfterUserAction(); | 1730 OnAfterUserAction(); |
1687 } | 1731 } |
1688 } | 1732 } |
1689 | 1733 |
1690 } // namespace views | 1734 } // namespace views |
OLD | NEW |