+ 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];
+ }
+
+ if ( [GetNSButton() bezelStyle] == NSRoundedBezelStyle )
+ {
+ switch( size )
+ {
+ case NSRegularControlSize:
+ left = right = 6;
+ top = 4;
+ bottom = 8;
+ break;
+ case NSSmallControlSize:
+ left = right = 5;
+ top = 4;
+ bottom = 7;
+ break;
+ case NSMiniControlSize:
+ left = right = 1;
+ top = 0;
+ bottom = 2;
+ break;
+ }
+ }
+ }
+
+
+private:
+ NSButton *GetNSButton() const
+ {
+ wxASSERT( [m_osxView isKindOfClass:[NSButton class]] );
+
+ return static_cast<NSButton *>(m_osxView);
+ }
+};
+
+} // anonymous namespace
+
+extern "C" void SetBezelStyleFromBorderFlags(NSButton *v, long style);
+
+// set bezel style depending on the wxBORDER_XXX flags specified by the style
+void SetBezelStyleFromBorderFlags(NSButton *v, long style)
+{
+ if ( style & wxBORDER_NONE )
+ {
+ [v setBezelStyle:NSShadowlessSquareBezelStyle];
+ [v setBordered:NO];
+ }
+ else // we do have a border
+ {
+ // see trac #11128 for a thorough discussion
+ if ( (style & wxBORDER_MASK) == wxBORDER_RAISED )
+ [v setBezelStyle:NSRegularSquareBezelStyle];
+ else if ( (style & wxBORDER_MASK) == wxBORDER_SUNKEN )
+ [v setBezelStyle:NSSmallSquareBezelStyle];
+ else
+ [v setBezelStyle:NSShadowlessSquareBezelStyle];
+ }
+}
+
+
+wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer,
+ wxWindowMac* WXUNUSED(parent),
+ wxWindowID id,