summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-21 10:58:27 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-21 10:58:27 +0000
commitd9adf11dd209e90a880833de750a253d4d6621eb (patch)
treedd00ef087d436162d4e065c7662ef9497c717bc7
parent20a4399c3590062532ea186c523a3f70a624967e (diff)
downloadchromium_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.cc69
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);
};