return msStyle;
}
-WXHBRUSH wxStaticText::DoMSWControlColor(WXHDC pDC, wxColour colBg)
-{
- // If this control has a non-standard fg colour but still has the standard
- // bg then we need to also give it a non-standard bg otherwise the fg
- // setting has no effect.
- WXHBRUSH hbr = wxControl::DoMSWControlColor(pDC, colBg);
- if (!hbr && m_hasFgCol)
- {
- hbr = MSWGetBgBrushForChild(pDC, this);
- if (!hbr)
- {
- HDC hdc = (HDC)pDC;
- wxColour bg = GetBackgroundColour();
- ::SetBkColor(hdc, wxColourToRGB(bg));
- wxBrush *brush = wxTheBrushList->FindOrCreateBrush(bg, wxSOLID);
- hbr = (WXHBRUSH)brush->GetResourceHandle();
- }
- }
- return hbr;
-}
-
wxSize wxStaticText::DoGetBestSize() const
{
wxClientDC dc(wx_const_cast(wxStaticText *, this));
wxFont font(GetFont());
if (!font.Ok())
font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
-
+
dc.SetFont(font);
wxCoord widthTextMax, heightTextTotal;
widthTextMax += 2;
#endif // __WXWINCE__
- return wxSize(widthTextMax, heightTextTotal);
+ // border takes extra space
+ //
+ // TODO: this is probably not wxStaticText-specific and should be moved
+ wxCoord border;
+ switch ( GetBorder() )
+ {
+ case wxBORDER_STATIC:
+ case wxBORDER_SIMPLE:
+ border = 1;
+ break;
+
+ case wxBORDER_SUNKEN:
+ border = 2;
+ break;
+
+ case wxBORDER_RAISED:
+ case wxBORDER_DOUBLE:
+ border = 3;
+ break;
+
+ default:
+ wxFAIL_MSG( _T("unknown border style") );
+ // fall through
+
+ case wxBORDER_NONE:
+ border = 0;
+ }
+
+ widthTextMax += 2*border;
+ heightTextTotal += 2*border;
+
+ wxSize best(widthTextMax, heightTextTotal);
+ CacheBestSize(best);
+ return best;
}
void wxStaticText::DoSetSize(int x, int y, int w, int h, int sizeFlags)