// 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;
+ // this style is necessary to receive mouse events
+ msStyle |= SS_NOTIFY;
+
return msStyle;
}
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__
+ // 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;