X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b45ed7a273799b1b360482496a706a211eca6435..9556c0f1b3dec367bf2bdc3eef7b1d54668adcf7:/src/mac/carbon/bmpbuttn.cpp diff --git a/src/mac/carbon/bmpbuttn.cpp b/src/mac/carbon/bmpbuttn.cpp index f296776652..f6ce4dd00c 100644 --- a/src/mac/carbon/bmpbuttn.cpp +++ b/src/mac/carbon/bmpbuttn.cpp @@ -29,25 +29,36 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit const wxValidator& validator, const wxString& name) { - if ( !wxBitmapButtonBase::Create(parent, id, _T(""), pos, size, + // since bitmapbuttonbase is subclass of button calling wxBitmapButtonBase::Create + // essentially creates an additional button + if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; m_bmpNormal = bitmap; - m_marginX = 0; - m_marginY = 0; + if (style & wxBU_AUTODRAW) + { + m_marginX = wxDEFAULT_BUTTON_MARGIN; + m_marginY = wxDEFAULT_BUTTON_MARGIN; + } + else + { + m_marginX = 0; + m_marginY = 0; + } - // int x = pos.x; - // int y = pos.y; int width = size.x; int height = size.y; - if ( width == -1 && bitmap.Ok()) - width = bitmap.GetWidth() + 2*m_marginX; - - if ( height == -1 && bitmap.Ok()) - height = bitmap.GetHeight() + 2*m_marginY; + if ( bitmap.Ok() ) + { + wxSize newSize = DoGetBestSize(); + if ( width == -1 ) + width = newSize.x; + if ( height == -1 ) + height = newSize.y; + } Rect bounds ; Str255 title ; @@ -89,3 +100,14 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) } } + +wxSize wxBitmapButton::DoGetBestSize() const +{ + wxSize best; + if (m_bmpNormal.Ok()) + { + best.x = m_bmpNormal.GetWidth() + 2*m_marginX; + best.y = m_bmpNormal.GetHeight() + 2*m_marginY; + } + return best; +}