X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/adf264f222cd0e771d7afa392abfe03d350cf620..60372b0d54379701d62edf5595a7dc25c48330e1:/src/osx/cocoa/button.mm?ds=inline diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index 35221346e1..3e4288ba8e 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -23,36 +23,6 @@ #endif // wxUSE_MARKUP -wxSize wxButton::DoGetBestSize() const -{ - // We only use help button bezel if we don't have any (non standard) label - // to display in the button. Otherwise even wxID_HELP buttons look like - // normal push buttons. - if ( GetId() == wxID_HELP && GetLabel().empty() ) - return wxSize( 23 , 23 ) ; - - wxRect r ; - GetPeer()->GetBestRect(&r); - - wxSize sz = r.GetSize(); - sz.x = sz.x + MacGetLeftBorderSize() + - MacGetRightBorderSize(); - sz.y = sz.y + MacGetTopBorderSize() + - MacGetBottomBorderSize(); - - const int wBtnStd = GetDefaultSize().x; - - if ( (sz.x < wBtnStd) && !HasFlag(wxBU_EXACTFIT) ) - sz.x = wBtnStd; - - return sz ; -} - -wxSize wxButton::GetDefaultSize() -{ - return wxSize(84, 20); -} - @implementation wxNSButton + (void)initialize @@ -119,14 +89,22 @@ public: wxButtonCocoaImpl(wxWindowMac *wxpeer, wxNSButton *v) : wxWidgetCocoaImpl(wxpeer, v) { + SetNeedsFrame(false); } virtual void SetBitmap(const wxBitmap& bitmap) { // switch bezel style for plain pushbuttons - if ( bitmap.IsOk() && [GetNSButton() bezelStyle] == NSRoundedBezelStyle ) - [GetNSButton() setBezelStyle:NSRegularSquareBezelStyle ]; - + if ( bitmap.IsOk() ) + { + if ([GetNSButton() bezelStyle] == NSRoundedBezelStyle) + [GetNSButton() setBezelStyle:NSRegularSquareBezelStyle]; + } + else + { + [GetNSButton() setBezelStyle:NSRoundedBezelStyle]; + } + wxWidgetCocoaImpl::SetBitmap(bitmap); } @@ -221,8 +199,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]; } } @@ -233,7 +213,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 ) ; @@ -249,9 +229,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 ); }