diff options
-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; |