wxWidgetImplType* wxWidgetImpl::CreateBitmapButton( wxWindowMac* wxpeer, wxWindowMac* parent, wxWindowID WXUNUSED(id), const wxBitmap& bitmap, const wxPoint& pos, const wxSize& size, long style, long WXUNUSED(extraStyle)) { wxMacBitmapButton* peer = new wxMacBitmapButton(wxpeer, bitmap, style); OSStatus err; WXWindow macParent = MAC_WXHWND(parent->MacGetTopLevelWindowRef()); Rect bounds = wxMacGetBoundsForControl( wxpeer, pos, size ); ControlButtonContentInfo info; peer->InitButtonContentInfo(info, bitmap); if ( info.contentType == kControlContentIconRef ) { err = CreateIconControl ( macParent, &bounds, &info, false, peer->GetControlRefAddr() ); } else // normal bevel button { err = CreateBevelButtonControl ( macParent, &bounds, CFSTR(""), style & wxBU_AUTODRAW ? kControlBevelButtonSmallBevel : kControlBevelButtonNormalBevel, kControlBehaviorOffsetContents, &info, 0, // menu id (no associated menu) 0, // menu behaviour (unused) 0, // menu placement (unused too) peer->GetControlRefAddr() ); } verify_noerr( err ); wxMacReleaseBitmapButton( &info ); return peer; }
wxWidgetImplType* wxWidgetImpl::CreateBitmapButton( wxWindowMac* wxpeer, wxWindowMac* parent, wxWindowID WXUNUSED(id), const wxBitmap& bitmap, const wxPoint& pos, const wxSize& size, long style, long WXUNUSED(extraStyle)) { OSStatus err = noErr; ControlButtonContentInfo info; Rect bounds = wxMacGetBoundsForControl( wxpeer, pos, size ); wxMacControl* peer = new wxMacBitmapButton( wxpeer ); wxBitmap bmp; if ( bitmap.Ok() && (style & wxBORDER_NONE) ) { bmp = wxMakeStdSizeBitmap(bitmap); // TODO set bitmap in peer as well } else bmp = bitmap; if ( style & wxBORDER_NONE ) { // contrary to the docs this control only works with iconrefs wxMacCreateBitmapButton( &info, bmp, kControlContentIconRef ); err = CreateIconControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, &info, false, peer->GetControlRefAddr() ); } else { wxMacCreateBitmapButton( &info, bmp ); err = CreateBevelButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, CFSTR(""), ((style & wxBU_AUTODRAW) ? kControlBevelButtonSmallBevel : kControlBevelButtonNormalBevel ), kControlBehaviorOffsetContents, &info, 0, 0, 0, peer->GetControlRefAddr() ); } verify_noerr( err ); wxMacReleaseBitmapButton( &info ); return peer; }