diff options
author | oshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-01 23:58:51 +0000 |
---|---|---|
committer | oshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-01 23:58:51 +0000 |
commit | b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19 (patch) | |
tree | 00c419dd57f67dee69794bce50a2bddc602d916b /views/examples | |
parent | c9717965e7a4a38e4b3e0e30a33618ba35c372e3 (diff) | |
download | chromium_src-b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19.zip chromium_src-b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19.tar.gz chromium_src-b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19.tar.bz2 |
TextStyles in TextfieldViews
- TextStyle class that specify the styles.
- Model owns TextStyle object. No need for client to manage
memory.
- It updates style list each time new item is added
and resolves overlap so that Paint method can simply
iterate and paint them.
- I changed selection so that it simply changes background of the selected text. This seems to be how webkit does and is much simpler.
URL decoration in omnibox
Renamed ClearCompositionText -> CancelCompositionText
No need to review changes to range. (http://codereview.chromium.org/7039051/)
BUG=none
TEST=added tests for textfield views.
Review URL: http://codereview.chromium.org/7047023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87552 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/examples')
-rw-r--r-- | views/examples/textfield_example.cc | 24 | ||||
-rw-r--r-- | views/examples/textfield_example.h | 12 |
2 files changed, 34 insertions, 2 deletions
diff --git a/views/examples/textfield_example.cc b/views/examples/textfield_example.cc index 26c732d..f3553fe 100644 --- a/views/examples/textfield_example.cc +++ b/views/examples/textfield_example.cc @@ -5,7 +5,9 @@ #include "views/examples/textfield_example.h" #include "base/utf_string_conversions.h" +#include "ui/base/range/range.h" #include "views/controls/label.h" +#include "views/controls/textfield/text_style.h" #include "views/controls/textfield/textfield.h" #include "views/layout/grid_layout.h" #include "views/view.h" @@ -13,7 +15,10 @@ namespace examples { TextfieldExample::TextfieldExample(ExamplesMain* main) - : ExampleBase(main) { + : ExampleBase(main), + underline_(NULL), + strike_(NULL), + color_(NULL) { } TextfieldExample::~TextfieldExample() { @@ -31,6 +36,7 @@ void TextfieldExample::CreateExampleView(views::View* container) { clear_all_ = new views::TextButton(this, L"Clear All"); append_ = new views::TextButton(this, L"Append"); set_ = new views::TextButton(this, L"Set"); + set_style_ = new views::TextButton(this, L"Set Styles"); name_->SetController(this); password_->SetController(this); @@ -56,6 +62,8 @@ void TextfieldExample::CreateExampleView(views::View* container) { layout->AddView(append_); layout->StartRow(0, 0); layout->AddView(set_); + layout->StartRow(0, 0); + layout->AddView(set_style_); } void TextfieldExample::ContentsChanged(views::Textfield* sender, @@ -84,6 +92,20 @@ void TextfieldExample::ButtonPressed(views::Button* sender, name_->AppendText(WideToUTF16(L"[append]")); } else if (sender == set_) { name_->SetText(WideToUTF16(L"[set]")); + } else if (sender == set_style_) { + if (!underline_) { + color_ = name_->CreateTextStyle(); + color_->set_foreground(SK_ColorYELLOW); + underline_ = name_->CreateTextStyle(); + underline_->set_underline(true); + underline_->set_foreground(SK_ColorBLUE); + strike_ = name_->CreateTextStyle(); + strike_->set_strike(true); + strike_->set_foreground(SK_ColorRED); + name_->ApplyTextStyle(color_, ui::Range(0, 11)); + name_->ApplyTextStyle(underline_, ui::Range(1, 7)); + name_->ApplyTextStyle(strike_, ui::Range(6, 9)); + } } } diff --git a/views/examples/textfield_example.h b/views/examples/textfield_example.h index dc29842..faa9f46 100644 --- a/views/examples/textfield_example.h +++ b/views/examples/textfield_example.h @@ -15,6 +15,10 @@ #include "views/controls/textfield/textfield_controller.h" #include "views/examples/example_base.h" +namespace views { +class TextStyle; +} + namespace examples { // TextfieldExample mimics login screen. @@ -44,11 +48,17 @@ class TextfieldExample : public ExampleBase, views::Textfield* name_; views::Textfield* password_; - // Buttons to show password text and to clear the textfields. + // Various buttons to control textfield. views::TextButton* show_password_; views::TextButton* clear_all_; views::TextButton* append_; views::TextButton* set_; + views::TextButton* set_style_; + + // Text Styles + views::TextStyle* underline_; + views::TextStyle* strike_; + views::TextStyle* color_; DISALLOW_COPY_AND_ASSIGN(TextfieldExample); }; |