- we don't seem to need the extra +2 after Jamie's fix for the min size
- we shouldn't use margins at all for buttons without border, this looks bad
- refactored the code slightly to avoid some duplication
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39819
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
{
if ( m_bmpNormal.Ok() )
{
{
if ( m_bmpNormal.Ok() )
{
+ int width = m_bmpNormal.GetWidth(),
+ height = m_bmpNormal.GetHeight();
+ int marginH = 0,
+ marginV = 0;
+
#if wxUSE_UXTHEME
if ( wxUxThemeEngine::GetIfActive() )
{
#if wxUSE_UXTHEME
if ( wxUxThemeEngine::GetIfActive() )
{
// XP doesn't draw themed buttons correctly when the client area is
// smaller than 8x8 - enforce this minimum size for small bitmaps
// XP doesn't draw themed buttons correctly when the client area is
// smaller than 8x8 - enforce this minimum size for small bitmaps
- wxSize best(wxMax(8, m_bmpNormal.GetWidth()) +
- margins.cxLeftWidth + margins.cxRightWidth + 2,
- wxMax(8, m_bmpNormal.GetHeight()) +
- margins.cyTopHeight + margins.cyBottomHeight + 2);
- CacheBestSize(best);
- return best;
+ if ( width < 8 )
+ width = 8;
+ if ( height < 8 )
+ height = 8;
+
+ // don't add margins for the borderless buttons, they don't need
+ // them and it just makes them appear larger than needed
+ if ( !HasFlag(wxBORDER_NONE) )
+ {
+ marginH = margins.cxLeftWidth + margins.cxRightWidth;
+ marginV = margins.cyTopHeight + margins.cyBottomHeight;
+ }
+ {
+ if ( !HasFlag(wxBORDER_NONE) )
+ {
+ marginH = 2*m_marginX;
+ marginV = 2*m_marginY;
+ }
+ }
- wxSize best(m_bmpNormal.GetWidth() + 2*m_marginX,
- m_bmpNormal.GetHeight() + 2*m_marginY);
+ wxSize best(width + marginH, height + marginV);
CacheBestSize(best);
return best;
}
CacheBestSize(best);
return best;
}