diff --git a/docs/changes.txt b/docs/changes.txt index f2b0cd09c1..b7880e5327 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -591,6 +591,7 @@ wxMSW: - Fix compilation with C++Builder XE compiler (Nichka). - Fix best height of wxSlider with labels but without ticks (Artur Wieczorek). - Fix initial text value of wxSpinCtrlDouble (Laurent Poujoulat). +- Fix best size calculation for bitmaps with buttons (Artur Wieczorek). 3.0.2: (released 2014-10-06) diff --git a/src/msw/anybutton.cpp b/src/msw/anybutton.cpp index b5d6dc84c0..2ee28d1e57 100644 --- a/src/msw/anybutton.cpp +++ b/src/msw/anybutton.cpp @@ -519,8 +519,9 @@ void wxAnyButton::AdjustForBitmapSize(wxSize &size) const { wxCHECK_RET( m_imageData, wxT("shouldn't be called if no image") ); - // account for the bitmap size - const wxSize sizeBmp = m_imageData->GetBitmap(State_Normal).GetSize(); + // account for the bitmap size, including the user-specified margins + const wxSize sizeBmp = m_imageData->GetBitmap(State_Normal).GetSize() + + 2*m_imageData->GetBitmapMargins(); const wxDirection dirBmp = m_imageData->GetBitmapPosition(); if ( dirBmp == wxLEFT || dirBmp == wxRIGHT ) { @@ -535,9 +536,6 @@ void wxAnyButton::AdjustForBitmapSize(wxSize &size) const size.x = sizeBmp.x; } - // account for the user-specified margins - size += 2*m_imageData->GetBitmapMargins(); - // and also for the margins we always add internally (unless we have no // border at all in which case the button has exactly the same size as // bitmap and so no margins should be used)