X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a4fec5b41e2109e2c4822d3015aa0e442754bfbb..ec2df34e27ba41f202ecbf096cdfed082a9ddb8f:/src/osx/carbon/button.cpp diff --git a/src/osx/carbon/button.cpp b/src/osx/carbon/button.cpp index 14ff0c1f55..b96099be0d 100644 --- a/src/osx/carbon/button.cpp +++ b/src/osx/carbon/button.cpp @@ -27,97 +27,14 @@ // // -wxSize wxButton::DoGetBestSize() const -{ - if ( GetId() == wxID_HELP ) - return wxSize( 20 , 20 ) ; - - wxSize sz = GetDefaultSize() ; - - switch (GetWindowVariant()) - { - case wxWINDOW_VARIANT_NORMAL: - case wxWINDOW_VARIANT_LARGE: - sz.y = 20 ; - break; - - case wxWINDOW_VARIANT_SMALL: - sz.y = 17 ; - break; - - case wxWINDOW_VARIANT_MINI: - sz.y = 15 ; - break; - - default: - break; - } - -#if wxOSX_USE_CARBON - Rect bestsize = { 0 , 0 , 0 , 0 } ; - m_peer->GetBestRect( &bestsize ) ; - - int wBtn; - if ( EmptyRect( &bestsize ) || ( GetWindowStyle() & wxBU_EXACTFIT) ) - { - Point bounds; - - ControlFontStyleRec controlFont; - OSStatus err = m_peer->GetData( kControlEntireControl, kControlFontStyleTag, &controlFont ); - verify_noerr( err ); - - wxCFStringRef str( m_label, GetFont().GetEncoding() ); - -#if wxOSX_USE_ATSU_TEXT - SInt16 baseline; - if ( m_font.MacGetThemeFontID() != kThemeCurrentPortFont ) - { - err = GetThemeTextDimensions( - (!m_label.empty() ? (CFStringRef)str : CFSTR(" ")), - m_font.MacGetThemeFontID(), kThemeStateActive, false, &bounds, &baseline ); - verify_noerr( err ); - } - else -#endif - { - wxClientDC dc(const_cast(this)); - wxCoord width, height ; - dc.GetTextExtent( m_label , &width, &height); - bounds.h = width; - bounds.v = height; - } - - wBtn = bounds.h + sz.y; - } - else - { - wBtn = bestsize.right - bestsize.left ; - // non 'normal' window variants don't return the correct height - // sz.y = bestsize.bottom - bestsize.top ; - } - if ((wBtn > sz.x) || ( GetWindowStyle() & wxBU_EXACTFIT)) - sz.x = wBtn; -#endif - - return sz ; -} - -wxSize wxButton::GetDefaultSize() -{ - int wBtn = 70 ; - int hBtn = 20 ; - - return wxSize(wBtn, hBtn); -} - -wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, - wxWindowMac* parent, - wxWindowID id, +wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, + wxWindowMac* parent, + wxWindowID id, const wxString& label, - const wxPoint& pos, + const wxPoint& pos, const wxSize& size, - long WXUNUSED(style), - long WXUNUSED(extraStyle)) + long WXUNUSED(style), + long WXUNUSED(extraStyle)) { OSStatus err; Rect bounds = wxMacGetBoundsForControl( wxpeer , pos , size ) ; @@ -136,18 +53,21 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, { // Button height is static in Mac, can't be changed, so we need to force it here int maxHeight; - switch (wxpeer->GetWindowVariant() ) + switch (wxpeer->GetWindowVariant() ) { + default: + wxFAIL_MSG( "unknown window variant" ); + // fall through + case wxWINDOW_VARIANT_NORMAL: case wxWINDOW_VARIANT_LARGE: maxHeight = 20 ; break; case wxWINDOW_VARIANT_SMALL: maxHeight = 17; + break; case wxWINDOW_VARIANT_MINI: maxHeight = 15; - default: - break; } bounds.bottom = bounds.top + maxHeight ; wxpeer->SetMaxSize( wxSize( wxpeer->GetMaxWidth() , maxHeight )); @@ -169,33 +89,33 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, } void wxMacControl::SetDefaultButton( bool isDefault ) -{ +{ SetData(kControlButtonPart , kControlPushButtonDefaultTag , (Boolean) isDefault ) ; } -wxWidgetImplType* wxWidgetImpl::CreateDisclosureTriangle( wxWindowMac* wxpeer, - wxWindowMac* parent, - wxWindowID WXUNUSED(id), +wxWidgetImplType* wxWidgetImpl::CreateDisclosureTriangle( wxWindowMac* wxpeer, + wxWindowMac* parent, + wxWindowID WXUNUSED(id), const wxString& label, - const wxPoint& pos, + const wxPoint& pos, const wxSize& size, - long WXUNUSED(style), - long WXUNUSED(extraStyle)) + long WXUNUSED(style), + long WXUNUSED(extraStyle)) { Rect bounds = wxMacGetBoundsForControl( wxpeer , pos , size ) ; wxMacControl* peer = new wxMacControl(wxpeer) ; OSStatus err = CreateDisclosureTriangleControl( - MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds, + MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds, kControlDisclosureTrianglePointDefault, wxCFStringRef( label ), 0, // closed TRUE, // draw title TRUE, // auto toggle back and forth peer->GetControlRefAddr() ); - + verify_noerr( err ); return peer; } - +