diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-22 00:22:28 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-22 00:22:28 +0000 |
commit | a849f497f2707c59d104bef5b62f6e5cf0a9a5ea (patch) | |
tree | ea983c73974d795744169783f25ba8f69cff4ef1 /chrome/views | |
parent | d06442883eb767e2b61de78f1d942fc0f9b87df1 (diff) | |
download | chromium_src-a849f497f2707c59d104bef5b62f6e5cf0a9a5ea.zip chromium_src-a849f497f2707c59d104bef5b62f6e5cf0a9a5ea.tar.gz chromium_src-a849f497f2707c59d104bef5b62f6e5cf0a9a5ea.tar.bz2 |
Make sure radio buttons can't be toggled like checkboxes.
First part of:
http://crbug.com/10834
TEST=open options, click on any of the already-checked radio buttons. It should stay checked and not uncheck.
Review URL: http://codereview.chromium.org/87068
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14167 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/views')
-rw-r--r-- | chrome/views/controls/button/checkbox.cc | 2 | ||||
-rw-r--r-- | chrome/views/controls/button/radio_button.cc | 9 | ||||
-rw-r--r-- | chrome/views/controls/button/radio_button.h | 1 |
3 files changed, 11 insertions, 1 deletions
diff --git a/chrome/views/controls/button/checkbox.cc b/chrome/views/controls/button/checkbox.cc index a67dbd4..ae523ed 100644 --- a/chrome/views/controls/button/checkbox.cc +++ b/chrome/views/controls/button/checkbox.cc @@ -123,7 +123,7 @@ bool Checkbox::OnMousePressed(const MouseEvent& e) { void Checkbox::OnMouseReleased(const MouseEvent& e, bool canceled) { native_wrapper_->SetPushed(false); - if (!canceled & HitTestLabel(e)) { + if (!canceled && HitTestLabel(e)) { SetChecked(!checked()); ButtonPressed(); } diff --git a/chrome/views/controls/button/radio_button.cc b/chrome/views/controls/button/radio_button.cc index fb09549..b8b870cb 100644 --- a/chrome/views/controls/button/radio_button.cc +++ b/chrome/views/controls/button/radio_button.cc @@ -81,6 +81,15 @@ bool RadioButton::IsGroupFocusTraversable() const { return false; } +void RadioButton::OnMouseReleased(const views::MouseEvent& event, + bool canceled) { + native_wrapper_->SetPushed(false); + // Call through to toggle the button only if we're not already checked, since + // radio buttons can't be toggled like checkboxes. + if (!checked()) + Checkbox::OnMouseReleased(event, canceled); +} + std::string RadioButton::GetClassName() const { return kViewClassName; } diff --git a/chrome/views/controls/button/radio_button.h b/chrome/views/controls/button/radio_button.h index f1db45b..1e07bae 100644 --- a/chrome/views/controls/button/radio_button.h +++ b/chrome/views/controls/button/radio_button.h @@ -26,6 +26,7 @@ class RadioButton : public Checkbox { // Overridden from View: virtual View* GetSelectedViewForGroup(int group_id); virtual bool IsGroupFocusTraversable() const; + virtual void OnMouseReleased(const views::MouseEvent& event, bool canceled); protected: virtual std::string GetClassName() const; |