summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/views/controls/button/checkbox.cc2
-rw-r--r--chrome/views/controls/button/radio_button.cc9
-rw-r--r--chrome/views/controls/button/radio_button.h1
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;