diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-21 10:58:27 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-21 10:58:27 +0000 |
commit | d9adf11dd209e90a880833de750a253d4d6621eb (patch) | |
tree | dd00ef087d436162d4e065c7662ef9497c717bc7 | |
parent | 20a4399c3590062532ea186c523a3f70a624967e (diff) | |
download | chromium_src-d9adf11dd209e90a880833de750a253d4d6621eb.zip chromium_src-d9adf11dd209e90a880833de750a253d4d6621eb.tar.gz chromium_src-d9adf11dd209e90a880833de750a253d4d6621eb.tar.bz2 |
Remove user button should require additional click
BUG=http://code.google.com/p/chromium-os/issues/detail?id=7710
TEST=manual
Review URL: http://codereview.chromium.org/3876003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63349 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/login/user_view.cc | 69 |
1 files changed, 38 insertions, 31 deletions
diff --git a/chrome/browser/chromeos/login/user_view.cc b/chrome/browser/chromeos/login/user_view.cc index 638b1eb..9bb032c 100644 --- a/chrome/browser/chromeos/login/user_view.cc +++ b/chrome/browser/chromeos/login/user_view.cc @@ -132,52 +132,58 @@ class RemoveButton : public views::TextButton { : views::TextButton(listener, std::wstring()), icon_(icon), text_(text), - top_right_(top_right) { + top_right_(top_right), + was_first_click_(false) { SetEnabledColor(SK_ColorWHITE); SetDisabledColor(SK_ColorWHITE); SetHighlightColor(SK_ColorWHITE); SetHoverColor(SK_ColorWHITE); SetIcon(icon_); - set_border(NULL); UpdatePosition(); } protected: // Overridden from View: - virtual void OnMouseEntered(const views::MouseEvent& e) { - SetIcon(SkBitmap()); - views::TextButton::SetText(text_); - - const SkColor kStrokeColor = SK_ColorWHITE; - const SkColor kButtonColor = 0xFFE94949; - const int kStrokeWidth = 1; - const int kVerticalPadding = 4; - const int kHorizontalPadding = 8; - const int kCornerRadius = 4; - - set_background( - CreateRoundedBackground( - kCornerRadius, kStrokeWidth, kButtonColor, kStrokeColor)); - - set_border( - views::Border::CreateEmptyBorder(kVerticalPadding, - kHorizontalPadding, - kVerticalPadding, - kHorizontalPadding)); - - UpdatePosition(); - } - - void OnMouseMoved(const views::MouseEvent& e) { - } - - virtual void OnMouseExited(const views::MouseEvent& e) { + virtual void OnMouseExited(const views::MouseEvent& event) { SetIcon(icon_); views::TextButton::SetText(std::wstring()); ClearMaxTextSize(); set_background(NULL); - set_border(NULL); + set_border(new views::TextButtonBorder); UpdatePosition(); + views::TextButton::OnMouseExited(event); + was_first_click_ = false; + } + + void NotifyClick(const views::Event& event) { + if (!was_first_click_) { + // On first click transform image to "remove" label. + SetIcon(SkBitmap()); + views::TextButton::SetText(text_); + + const SkColor kStrokeColor = SK_ColorWHITE; + const SkColor kButtonColor = 0xFFE94949; + const int kStrokeWidth = 1; + const int kVerticalPadding = 4; + const int kHorizontalPadding = 8; + const int kCornerRadius = 4; + + set_background( + CreateRoundedBackground( + kCornerRadius, kStrokeWidth, kButtonColor, kStrokeColor)); + + set_border( + views::Border::CreateEmptyBorder(kVerticalPadding, + kHorizontalPadding, + kVerticalPadding, + kHorizontalPadding)); + + UpdatePosition(); + was_first_click_ = true; + } else { + // On second click propagate to base class to fire ButtonPressed. + views::TextButton::NotifyClick(event); + } } void SetText(const std::wstring& text) { @@ -199,6 +205,7 @@ class RemoveButton : public views::TextButton { SkBitmap icon_; std::wstring text_; gfx::Point top_right_; + bool was_first_click_; DISALLOW_COPY_AND_ASSIGN(RemoveButton); }; |