support multi-line labels, add different native styles for buttons as we did for bitmap buttons

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2011-07-10 14:20:45 +00:00
parent 0a63a7b38f
commit 24e059c32c

View File

@@ -89,6 +89,7 @@ public:
wxButtonCocoaImpl(wxWindowMac *wxpeer, wxNSButton *v)
: wxWidgetCocoaImpl(wxpeer, v)
{
SetNeedsFrame(false);
}
virtual void SetBitmap(const wxBitmap& bitmap)
@@ -191,8 +192,10 @@ void SetBezelStyleFromBorderFlags(NSButton *v, long style)
[v setBezelStyle:NSRegularSquareBezelStyle];
else if ( (style & wxBORDER_MASK) == wxBORDER_SUNKEN )
[v setBezelStyle:NSSmallSquareBezelStyle];
else
else if ( (style & wxBORDER_MASK) == wxBORDER_SIMPLE )
[v setBezelStyle:NSShadowlessSquareBezelStyle];
else
[v setBezelStyle:NSRegularSquareBezelStyle];
}
}
@@ -203,7 +206,7 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer,
const wxString& label,
const wxPoint& pos,
const wxSize& size,
long WXUNUSED(style),
long style,
long WXUNUSED(extraStyle))
{
NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
@@ -219,9 +222,41 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer,
}
else
{
[v setBezelStyle:NSRoundedBezelStyle];
}
if ( style & wxBORDER_NONE )
{
[v setBezelStyle:NSShadowlessSquareBezelStyle];
[v setBordered:NO];
}
else
{
// the following styles only exist for certain sizes, so avoid them for
// multi-line
if ( label.Find('\n' ) == wxNOT_FOUND && label.Find('\r' ) == wxNOT_FOUND)
{
if ( (style & wxBORDER_MASK) == wxBORDER_RAISED )
[v setBezelStyle:NSRoundedBezelStyle];
else if ( (style & wxBORDER_MASK) == wxBORDER_SUNKEN )
[v setBezelStyle:NSTexturedRoundedBezelStyle];
else if ( (style & wxBORDER_MASK) == wxBORDER_SIMPLE )
[v setBezelStyle:NSShadowlessSquareBezelStyle];
else
[v setBezelStyle:NSRoundedBezelStyle];
}
else
{
if ( (style & wxBORDER_MASK) == wxBORDER_RAISED )
[v setBezelStyle:NSRegularSquareBezelStyle];
else if ( (style & wxBORDER_MASK) == wxBORDER_SUNKEN )
[v setBezelStyle:NSSmallSquareBezelStyle];
else if ( (style & wxBORDER_MASK) == wxBORDER_SIMPLE )
[v setBezelStyle:NSShadowlessSquareBezelStyle];
else
[v setBezelStyle:NSRegularSquareBezelStyle];
}
}
}
[v setButtonType:NSMomentaryPushInButton];
return new wxButtonCocoaImpl( wxpeer, v );
}