X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d8207702d1cf580a7200114abd52f186b4b9a4f3..59cb2555551e9f24481affe86ef8b1bcd519c14f:/src/osx/cocoa/choice.mm diff --git a/src/osx/cocoa/choice.mm b/src/osx/cocoa/choice.mm index 78ebecbbb9..0d70d6610d 100644 --- a/src/osx/cocoa/choice.mm +++ b/src/osx/cocoa/choice.mm @@ -4,7 +4,7 @@ // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: choice.cpp 54129 2008-06-11 19:30:52Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -33,7 +33,7 @@ + (void)initialize { static BOOL initialized = NO; - if (!initialized) + if (!initialized) { initialized = YES; wxOSXCocoaClassAddWXMethods( self ); @@ -52,19 +52,67 @@ @end -wxWidgetImplType* wxWidgetImpl::CreateChoice( wxWindowMac* wxpeer, - wxWindowMac* WXUNUSED(parent), - wxWindowID WXUNUSED(id), +@interface NSView(PossibleSizeMethods) +- (NSControlSize)controlSize; +@end + +class wxChoiceCocoaImpl : public wxWidgetCocoaImpl +{ +public: + wxChoiceCocoaImpl(wxWindowMac *wxpeer, wxNSPopUpButton *v) + : wxWidgetCocoaImpl(wxpeer, v) + { + } + + void GetLayoutInset(int &left , int &top , int &right, int &bottom) const + { + left = top = right = bottom = 0; + NSControlSize size = NSRegularControlSize; + if ( [m_osxView respondsToSelector:@selector(controlSize)] ) + size = [m_osxView controlSize]; + else if ([m_osxView respondsToSelector:@selector(cell)]) + { + id cell = [(id)m_osxView cell]; + if ([cell respondsToSelector:@selector(controlSize)]) + size = [cell controlSize]; + } + + switch( size ) + { + case NSRegularControlSize: + left = right = 3; + top = 2; + bottom = 4; + break; + case NSSmallControlSize: + left = right = 3; + top = 1; + bottom = 4; + break; + case NSMiniControlSize: + left = 1; + right = 2; + top = 0; + bottom = 0; + break; + } + } +}; + +wxWidgetImplType* wxWidgetImpl::CreateChoice( wxWindowMac* wxpeer, + wxWindowMac* WXUNUSED(parent), + wxWindowID WXUNUSED(id), wxMenu* menu, - const wxPoint& pos, + const wxPoint& pos, const wxSize& size, - long WXUNUSED(style), + long WXUNUSED(style), long WXUNUSED(extraStyle)) { NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; wxNSPopUpButton* v = [[wxNSPopUpButton alloc] initWithFrame:r pullsDown:NO]; [v setMenu: menu->GetHMenu()]; - wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); + [v setAutoenablesItems:NO]; + wxWidgetCocoaImpl* c = new wxChoiceCocoaImpl( wxpeer, v ); return c; }