| Index: chrome/browser/ui/views/autofill/decorated_textfield.cc
|
| diff --git a/chrome/browser/ui/views/autofill/decorated_textfield.cc b/chrome/browser/ui/views/autofill/decorated_textfield.cc
|
| index f1f39890255ab6e159ee31e42b263dc869fcbab5..377b73c08cd9154adc0136e7a0bb716806c70959 100644
|
| --- a/chrome/browser/ui/views/autofill/decorated_textfield.cc
|
| +++ b/chrome/browser/ui/views/autofill/decorated_textfield.cc
|
| @@ -15,13 +15,6 @@
|
| #include "ui/views/controls/textfield/textfield_controller.h"
|
| #include "ui/views/view_targeter.h"
|
|
|
| -namespace {
|
| -
|
| -// Padding around icons inside DecoratedTextfields.
|
| -const int kTextfieldIconPadding = 3;
|
| -
|
| -} // namespace
|
| -
|
| namespace autofill {
|
|
|
| // static
|
| @@ -31,17 +24,12 @@ DecoratedTextfield::DecoratedTextfield(
|
| const base::string16& default_value,
|
| const base::string16& placeholder,
|
| views::TextfieldController* controller)
|
| - : invalid_(false),
|
| - editable_(true) {
|
| - UpdateBackground();
|
| + : invalid_(false) {
|
| UpdateBorder();
|
|
|
| set_placeholder_text(placeholder);
|
| SetText(default_value);
|
| set_controller(controller);
|
| -
|
| - SetEventTargeter(
|
| - std::unique_ptr<views::ViewTargeter>(new views::ViewTargeter(this)));
|
| }
|
|
|
| DecoratedTextfield::~DecoratedTextfield() {}
|
| @@ -55,123 +43,16 @@ void DecoratedTextfield::SetInvalid(bool invalid) {
|
| SchedulePaint();
|
| }
|
|
|
| -void DecoratedTextfield::SetEditable(bool editable) {
|
| - if (editable_ == editable)
|
| - return;
|
| -
|
| - editable_ = editable;
|
| - UpdateBackground();
|
| - SetEnabled(editable);
|
| - IconChanged();
|
| -}
|
| -
|
| -void DecoratedTextfield::SetIcon(const gfx::Image& icon) {
|
| - if (!icon_view_ && icon.IsEmpty())
|
| - return;
|
| -
|
| - if (icon_view_)
|
| - RemoveChildView(icon_view_.get());
|
| -
|
| - if (!icon.IsEmpty()) {
|
| - icon_view_.reset(new views::ImageView());
|
| - icon_view_->set_owned_by_client();
|
| - icon_view_->SetImage(icon.ToImageSkia());
|
| - AddChildView(icon_view_.get());
|
| - }
|
| -
|
| - IconChanged();
|
| -}
|
| -
|
| -void DecoratedTextfield::SetTooltipIcon(const base::string16& text) {
|
| - if (!icon_view_ && text.empty())
|
| - return;
|
| -
|
| - if (icon_view_)
|
| - RemoveChildView(icon_view_.get());
|
| -
|
| - if (!text.empty()) {
|
| - icon_view_.reset(new TooltipIcon(text));
|
| - AddChildView(icon_view_.get());
|
| - }
|
| -
|
| - IconChanged();
|
| -}
|
| -
|
| -base::string16 DecoratedTextfield::GetPlaceholderText() const {
|
| - return editable_ ? views::Textfield::GetPlaceholderText() : base::string16();
|
| -}
|
| -
|
| const char* DecoratedTextfield::GetClassName() const {
|
| return kViewClassName;
|
| }
|
|
|
| -gfx::Size DecoratedTextfield::GetPreferredSize() const {
|
| - static const int height =
|
| - views::LabelButton(NULL, base::string16()).GetPreferredSize().height();
|
| - const gfx::Size size = views::Textfield::GetPreferredSize();
|
| - return gfx::Size(size.width(), std::max(size.height(), height));
|
| -}
|
| -
|
| -void DecoratedTextfield::Layout() {
|
| - views::Textfield::Layout();
|
| -
|
| - if (icon_view_ && icon_view_->visible()) {
|
| - gfx::Rect bounds = GetContentsBounds();
|
| - gfx::Size icon_size = icon_view_->GetPreferredSize();
|
| - int x = base::i18n::IsRTL() ?
|
| - bounds.x() - icon_size.width() - kTextfieldIconPadding :
|
| - bounds.right() + kTextfieldIconPadding;
|
| - // Vertically centered.
|
| - int y = bounds.y() + (bounds.height() - icon_size.height()) / 2;
|
| - gfx::Rect icon_bounds(x, y, icon_size.width(), icon_size.height());
|
| - icon_bounds.set_x(GetMirroredXForRect(icon_bounds));
|
| - icon_view_->SetBoundsRect(icon_bounds);
|
| - }
|
| -}
|
| -
|
| -views::View* DecoratedTextfield::TargetForRect(views::View* root,
|
| - const gfx::Rect& rect) {
|
| - CHECK_EQ(root, this);
|
| -
|
| - views::View* handler = views::ViewTargeterDelegate::TargetForRect(root, rect);
|
| - if (handler->GetClassName() == TooltipIcon::kViewClassName)
|
| - return handler;
|
| - return this;
|
| -}
|
| -
|
| -void DecoratedTextfield::UpdateBackground() {
|
| - if (editable_)
|
| - UseDefaultBackgroundColor();
|
| - else
|
| - SetBackgroundColor(SK_ColorTRANSPARENT);
|
| - set_background(
|
| - views::Background::CreateSolidBackground(GetBackgroundColor()));
|
| -}
|
| -
|
| void DecoratedTextfield::UpdateBorder() {
|
| std::unique_ptr<views::FocusableBorder> border(new views::FocusableBorder());
|
| if (invalid_)
|
| border->SetColor(gfx::kGoogleRed700);
|
| - else if (!editable_)
|
| - border->SetColor(SK_ColorTRANSPARENT);
|
| -
|
| - // Adjust the border insets to include the icon and its padding.
|
| - if (icon_view_ && icon_view_->visible()) {
|
| - int w = icon_view_->GetPreferredSize().width() + 2 * kTextfieldIconPadding;
|
| - gfx::Insets insets = border->GetInsets();
|
| - int left = insets.left() + (base::i18n::IsRTL() ? w : 0);
|
| - int right = insets.right() + (base::i18n::IsRTL() ? 0 : w);
|
| - border->SetInsets(insets.top(), left, insets.bottom(), right);
|
| - }
|
|
|
| SetBorder(std::move(border));
|
| }
|
|
|
| -void DecoratedTextfield::IconChanged() {
|
| - // Don't show the icon if nothing else is showing.
|
| - icon_view_->SetVisible(editable_ || !text().empty());
|
| - UpdateBorder();
|
| - Layout();
|
| -}
|
| -
|
| } // namespace autofill
|
|
|