X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4850cc8b2e1037cd394806db4ddcf73868588a4c..55410bb4f67febe1ca20654f078ea4fb9a6223ae:/src/osx/cocoa/button.mm?ds=inline diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index 60c1c45bf4..fb57055cd5 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -123,40 +123,16 @@ wxSize wxButton::GetDefaultSize() @implementation wxNSButton -- (id)initWithFrame:(NSRect)frame ++ (void)initialize { - [super initWithFrame:frame]; - impl = NULL; - [self setTarget: self]; - [self setAction: @selector(clickedAction:)]; - return self; -} - -- (void) clickedAction: (id) sender -{ - if ( impl ) + static BOOL initialized = NO; + if (!initialized) { - wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer(); - if ( wxpeer ) - wxpeer->HandleClicked(0); + initialized = YES; + wxOSXCocoaClassAddWXMethods( self ); } } -- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation -{ - impl = theImplementation; -} - -- (wxWidgetCocoaImpl*) implementation -{ - return impl; -} - -- (BOOL) isFlipped -{ - return YES; -} - - (int) intValue { switch ( [self state] ) @@ -212,7 +188,6 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, [v setButtonType:NSMomentaryPushInButton]; wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); - [v setImplementation:c]; return c; /* OSStatus err; @@ -267,8 +242,10 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, void wxWidgetCocoaImpl::SetDefaultButton( bool isDefault ) { - if ( [m_osxView isKindOfClass:[NSButton class]] ) - [(NSButton*)m_osxView setKeyEquivalent: isDefault ? @"\r" : nil ]; + if ( isDefault && [m_osxView isKindOfClass:[NSButton class]] ) + // NOTE: setKeyEquivalent: nil will trigger an assert + // instead do not call in that case. + [(NSButton*)m_osxView setKeyEquivalent: @"\r" ]; } void wxWidgetCocoaImpl::PerformClick() @@ -291,6 +268,5 @@ wxWidgetImplType* wxWidgetImpl::CreateDisclosureTriangle( wxWindowMac* wxpeer, [v setTitle:wxCFStringRef( label).AsNSString()]; [v setImagePosition:NSImageRight]; wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); - [v setImplementation:c]; return c; }