X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8e4c2912462461f9a2133ac39475457d668d1686..d485bda109d5ef0fef36a3f737549e9b9f54baab:/src/msw/bmpbuttn.cpp diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index a77672cbfb..5aa74bfb40 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -54,60 +54,6 @@ // macros // ---------------------------------------------------------------------------- -#if wxUSE_EXTENDED_RTTI - -WX_DEFINE_FLAGS( wxBitmapButtonStyle ) - -wxBEGIN_FLAGS( wxBitmapButtonStyle ) - // new style border flags, we put them first to - // use them for streaming out - wxFLAGS_MEMBER(wxBORDER_SIMPLE) - wxFLAGS_MEMBER(wxBORDER_SUNKEN) - wxFLAGS_MEMBER(wxBORDER_DOUBLE) - wxFLAGS_MEMBER(wxBORDER_RAISED) - wxFLAGS_MEMBER(wxBORDER_STATIC) - wxFLAGS_MEMBER(wxBORDER_NONE) - - // old style border flags - wxFLAGS_MEMBER(wxSIMPLE_BORDER) - wxFLAGS_MEMBER(wxSUNKEN_BORDER) - wxFLAGS_MEMBER(wxDOUBLE_BORDER) - wxFLAGS_MEMBER(wxRAISED_BORDER) - wxFLAGS_MEMBER(wxSTATIC_BORDER) - wxFLAGS_MEMBER(wxBORDER) - - // standard window styles - wxFLAGS_MEMBER(wxTAB_TRAVERSAL) - wxFLAGS_MEMBER(wxCLIP_CHILDREN) - wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) - wxFLAGS_MEMBER(wxWANTS_CHARS) - wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE) - wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) - wxFLAGS_MEMBER(wxVSCROLL) - wxFLAGS_MEMBER(wxHSCROLL) - - wxFLAGS_MEMBER(wxBU_AUTODRAW) - wxFLAGS_MEMBER(wxBU_LEFT) - wxFLAGS_MEMBER(wxBU_RIGHT) - wxFLAGS_MEMBER(wxBU_TOP) - wxFLAGS_MEMBER(wxBU_BOTTOM) -wxEND_FLAGS( wxBitmapButtonStyle ) - -IMPLEMENT_DYNAMIC_CLASS_XTI(wxBitmapButton, wxButton,"wx/bmpbuttn.h") - -wxBEGIN_PROPERTIES_TABLE(wxBitmapButton) - wxPROPERTY_FLAGS( WindowStyle , wxBitmapButtonStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE, 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style -wxEND_PROPERTIES_TABLE() - -wxBEGIN_HANDLERS_TABLE(wxBitmapButton) -wxEND_HANDLERS_TABLE() - -wxCONSTRUCTOR_5( wxBitmapButton , wxWindow* , Parent , wxWindowID , Id , wxBitmap , Bitmap , wxPoint , Position , wxSize , Size ) - -#else -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - BEGIN_EVENT_TABLE(wxBitmapButton, wxBitmapButtonBase) EVT_SYS_COLOUR_CHANGED(wxBitmapButton::OnSysColourChanged) END_EVENT_TABLE() @@ -127,66 +73,24 @@ bool wxBitmapButton::Create(wxWindow *parent, const wxBitmap& bitmap, const wxPoint& pos, const wxSize& size, long style, - const wxValidator& wxVALIDATOR_PARAM(validator), + const wxValidator& validator, const wxString& name) { if ( !wxBitmapButtonBase::Create(parent, id, pos, size, style, validator, name) ) return false; - SetBitmapLabel(bitmap); - - return true; -} - -void wxBitmapButton::DoSetBitmap(const wxBitmap& bitmap, State which) -{ if ( bitmap.IsOk() ) + SetBitmapLabel(bitmap); + + if ( !size.IsFullySpecified() ) { - switch ( which ) - { -#if wxUSE_IMAGE - case State_Normal: - if ( !HasFlag(wxBU_AUTODRAW) && !m_disabledSetByUser ) - { - wxImage img(bitmap.ConvertToImage().ConvertToGreyscale()); - wxBitmapButtonBase::DoSetBitmap(img, State_Disabled); - } - break; -#endif // wxUSE_IMAGE - - case State_Focused: - // if the focus bitmap is specified but current one isn't, use - // the focus bitmap for hovering as well if this is consistent - // with the current Windows version look and feel - // - // rationale: this is compatible with the old wxGTK behaviour - // and also makes it much easier to do "the right thing" for - // all platforms (some of them, such as Windows XP, have "hot" - // buttons while others don't) - if ( !m_hoverSetByUser ) - wxBitmapButtonBase::DoSetBitmap(bitmap, State_Current); - break; - - case State_Current: - // don't overwrite it with the focused bitmap - m_hoverSetByUser = true; - break; - - case State_Disabled: - // don't overwrite it with the version automatically created - // from the normal one - m_disabledSetByUser = true; - break; - - default: - // nothing special to do but include the default clause to - // suppress gcc warnings - ; - } + // As our bitmap has just changed, our best size has changed as well so + // reset the initial size using the new value. + SetInitialSize(size); } - wxBitmapButtonBase::DoSetBitmap(bitmap, which); + return true; } #endif // wxUSE_BMPBUTTON