X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dbeddfb93d3479d03d8ec4c0121dfbe3bbcc422b..6331c8c0216d220618e2f3017c59db1e2fd56a29:/src/osx/cocoa/button.mm?ds=sidebyside diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index ec39699324..750218176b 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -26,7 +26,7 @@ wxSize wxButton::DoGetBestSize() const { if ( GetId() == wxID_HELP ) - return wxSize( 20 , 20 ) ; + return wxSize( 23 , 23 ) ; wxSize sz = GetDefaultSize() ; @@ -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: (wxWidgetImpl *) theImplementation -{ - impl = theImplementation; -} - -- (wxWidgetImpl*) implementation -{ - return impl; -} - -- (BOOL) isFlipped -{ - return YES; -} - - (int) intValue { switch ( [self state] ) @@ -190,16 +166,14 @@ wxSize wxButton::GetDefaultSize() wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, - wxWindowMac* parent, + wxWindowMac* WXUNUSED(parent), wxWindowID id, - const wxString& label, + const wxString& WXUNUSED(label), const wxPoint& pos, const wxSize& size, - long style, - long extraStyle) + long WXUNUSED(style), + long WXUNUSED(extraStyle)) { - NSView* sv = (wxpeer->GetParent()->GetHandle() ); - NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; wxNSButton* v = [[wxNSButton alloc] initWithFrame:r]; @@ -213,9 +187,7 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, } [v setButtonType:NSMomentaryPushInButton]; - [sv addSubview:v]; wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); - [v setImplementation:c]; return c; /* OSStatus err; @@ -270,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() @@ -279,24 +253,20 @@ void wxWidgetCocoaImpl::PerformClick() } wxWidgetImplType* wxWidgetImpl::CreateDisclosureTriangle( wxWindowMac* wxpeer, - wxWindowMac* parent, - wxWindowID id, + wxWindowMac* WXUNUSED(parent), + wxWindowID WXUNUSED(id), const wxString& label, const wxPoint& pos, const wxSize& size, - long style, - long extraStyle) + long WXUNUSED(style), + long WXUNUSED(extraStyle)) { - NSView* sv = (wxpeer->GetParent()->GetHandle() ); - NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; wxNSButton* v = [[wxNSButton alloc] initWithFrame:r]; [v setBezelStyle:NSDisclosureBezelStyle]; [v setButtonType:NSOnOffButton]; [v setTitle:wxCFStringRef( label).AsNSString()]; [v setImagePosition:NSImageRight]; - [sv addSubview:v]; wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); - [v setImplementation:c]; return c; }