// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "stattext.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#if wxUSE_STATTEXT
+#include "wx/stattext.h"
+
#ifndef WX_PRECOMP
#include "wx/event.h"
#include "wx/app.h"
#include "wx/settings.h"
#endif
-#include "wx/stattext.h"
#include "wx/msw/private.h"
#if wxUSE_EXTENDED_RTTI
else
msStyle |= SS_LEFT;
- return msStyle;
-}
+ // this style is necessary to receive mouse events
+ msStyle |= SS_NOTIFY;
-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);
- }
- return hbr;
+ return msStyle;
}
wxSize wxStaticText::DoGetBestSize() const
wxFont font(GetFont());
if (!font.Ok())
font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
-
+
dc.SetFont(font);
wxCoord widthTextMax, heightTextTotal;
- dc.GetMultiLineTextExtent(GetLabel(), &widthTextMax, &heightTextTotal);
+ dc.GetMultiLineTextExtent(::wxStripMenuCodes(GetLabel()),
+ &widthTextMax, &heightTextTotal);
#ifdef __WXWINCE__
if ( widthTextMax )
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)