X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/065e208ec09e3d08d51d9604497f92f53c210f93..5a1e0e91a1ca5ec98b0eeb335cda757d1261ed08:/src/cocoa/radiobut.mm diff --git a/src/cocoa/radiobut.mm b/src/cocoa/radiobut.mm index 4962d81f45..7054adae23 100644 --- a/src/cocoa/radiobut.mm +++ b/src/cocoa/radiobut.mm @@ -1,19 +1,23 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: cocoa/radiobut.mm +// Name: src/cocoa/radiobut.mm // Purpose: wxRadioButton // Author: David Elliott // Modified by: // Created: 2003/03/16 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) 2003 David Elliott -// Licence: wxWidgets licence +// Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" + +#if wxUSE_RADIOBTN + +#include "wx/radiobut.h" + #ifndef WX_PRECOMP #include "wx/log.h" #include "wx/app.h" - #include "wx/radiobut.h" #endif //WX_PRECOMP #import @@ -96,13 +100,13 @@ wxRadioButton::~wxRadioButton() wxASSERT(slaveNode); wxASSERT(slaveNode->GetData() == this); m_radioSlaves.Erase(slaveNode); - + // Now find the new master wxRadioButton *newMaster = NULL; slaveNode = m_radioSlaves.GetFirst(); if(slaveNode) newMaster = slaveNode->GetData(); - + // For each node (including the new master) set the master, remove // it from this list, and add it to the new master's list for(; slaveNode; slaveNode = m_radioSlaves.GetFirst()) @@ -126,7 +130,10 @@ wxRadioButton::~wxRadioButton() void wxRadioButton::SetValue(bool value) { if(value) + { [GetNSButton() setState: NSOnState]; + Cocoa_DeselectOtherButtonsInTheGroup(); + } else [GetNSButton() setState: NSOffState]; } @@ -138,10 +145,14 @@ bool wxRadioButton::GetValue() const return state==NSOnState; } -void wxRadioButton::Cocoa_wxNSButtonAction(void) +/** + * If this radio button is part of a group, this method turns off every other + * button in the group. If this radio button is not part of a group, this + * method does absolutely nothing. + */ +void wxRadioButton::Cocoa_DeselectOtherButtonsInTheGroup(void) { - wxLogTrace(wxTRACE_COCOA,wxT("wxRadioButton")); - if(m_radioMaster && ([GetNSButton() state] == NSOnState)) + if(m_radioMaster) { for(wxRadioButtonList::compatibility_iterator slaveNode = m_radioMaster->m_radioSlaves.GetFirst(); @@ -152,9 +163,19 @@ void wxRadioButton::Cocoa_wxNSButtonAction(void) radioButton->SetValue(false); } } +} + +void wxRadioButton::Cocoa_wxNSButtonAction(void) +{ + wxLogTrace(wxTRACE_COCOA,wxT("wxRadioButton")); + if([GetNSButton() state] == NSOnState) + { + Cocoa_DeselectOtherButtonsInTheGroup(); + } wxCommandEvent event(wxEVT_COMMAND_RADIOBUTTON_SELECTED, GetId()); InitCommandEvent(event); // event.SetEventObject(this); event.SetInt(GetValue()); Command(event); } +#endif