- // the margins we get are too small, part of the bitmap is
- // truncated if we use them -- so add a little extra space
- wxSize best(m_bmpNormal.GetWidth() +
- margins.cxLeftWidth + margins.cxRightWidth + 5,
- m_bmpNormal.GetHeight() +
- margins.cyTopHeight + margins.cyBottomHeight + 2);
- CacheBestSize(best);
- return best;
+ // XP doesn't draw themed buttons correctly when the client area is
+ // smaller than 8x8 - enforce this minimum size for small bitmaps
+ 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) )
+ {
+ // we need 2 extra pixels for the focus rectangle, without them
+ // it's overwritten by the bitmap itself
+ marginH = margins.cxLeftWidth + margins.cxRightWidth + 2;
+ marginV = margins.cyTopHeight + margins.cyBottomHeight + 2;
+ }