X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4c1a4c41800b628d2fbd034da8a9cb45e3eec0bf..3e1924dd5f5744c3e2a8973de9b3e4f372b7fd85:/src/cocoa/radiobox.mm diff --git a/src/cocoa/radiobox.mm b/src/cocoa/radiobox.mm index 2eacb188f9..6ce3aa2dd3 100644 --- a/src/cocoa/radiobox.mm +++ b/src/cocoa/radiobox.mm @@ -24,6 +24,7 @@ #include "wx/cocoa/string.h" #include "wx/cocoa/autorelease.h" +#import #include "wx/cocoa/objc/NSView.h" #import #import @@ -32,7 +33,23 @@ IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) BEGIN_EVENT_TABLE(wxRadioBox, wxControl) END_EVENT_TABLE() -// WX_IMPLEMENT_COCOA_OWNER(wxRadioBox,NSTextField,NSControl,NSView) + +void wxRadioBox::AssociateNSBox(WX_NSBox cocoaObjcClass) +{ + NSMatrix *radioBox = [(WX_NSBox)cocoaObjcClass contentView]; + // Associate the NSMatrix (the NSBox's contentView) with the wxCocoaNSControl MI base class. + AssociateNSControl(radioBox); + // Set the target/action.. we don't really need to unset these + [radioBox setTarget:wxCocoaNSControl::sm_cocoaTarget]; + [radioBox setAction:@selector(wxNSControlAction:)]; +} + +void wxRadioBox::DisassociateNSBox(WX_NSBox cocoaObjcClass) +{ + DisassociateNSControl([(WX_NSBox)cocoaObjcClass contentView]); +} + +WX_IMPLEMENT_COCOA_OWNER(wxRadioBox,NSBox,NSView,NSView) bool wxRadioBox::Create(wxWindow *parent, wxWindowID winid, const wxString& title, @@ -79,7 +96,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID winid, NSMutableArray *allCells = [NSMutableArray arrayWithCapacity:n]; for(int i=0; i 0) + SetSelection(0); + if(m_parent) m_parent->CocoaAddChild(this); @@ -159,6 +184,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID winid, wxRadioBox::~wxRadioBox() { + DisassociateNSBox(GetNSBox()); } WX_NSMatrix wxRadioBox::GetNSMatrix() const @@ -208,7 +234,7 @@ void wxRadioBox::SetString(unsigned int n, const wxString& label) { int r = GetRowForIndex(n); int c = GetColumnForIndex(n); - [[GetNSMatrix() cellAtRow:r column:c] setTitle:wxNSStringWithWxString(wxStripMenuCodes(label, wxStrip_Mnemonics))]; + CocoaSetLabelForObject(label, [GetNSMatrix() cellAtRow:r column:c]); } // change the individual radio button state @@ -240,4 +266,12 @@ wxSize wxRadioBox::DoGetBestSize() const return wxControl::DoGetBestSize(); } +void wxRadioBox::CocoaTarget_action(void) +{ + wxCommandEvent event(wxEVT_COMMAND_RADIOBOX_SELECTED, GetId()); + InitCommandEvent(event); + event.SetInt(GetSelection()); // i.e. SetSelection. + Command(event); +} + #endif