X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e255b00ced5114d9b599cd66cd9d737686cec94..18138662efd0bc550d78cbe32e93e25b43bbcbd2:/src/msw/stattext.cpp diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp index 518a7677fd..20ae8b9c92 100644 --- a/src/msw/stattext.cpp +++ b/src/msw/stattext.cpp @@ -9,10 +9,6 @@ // 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" @@ -22,6 +18,8 @@ #if wxUSE_STATTEXT +#include "wx/stattext.h" + #ifndef WX_PRECOMP #include "wx/event.h" #include "wx/app.h" @@ -30,7 +28,6 @@ #include "wx/settings.h" #endif -#include "wx/stattext.h" #include "wx/msw/private.h" #if wxUSE_EXTENDED_RTTI @@ -123,20 +120,10 @@ WXDWORD wxStaticText::MSWGetStyle(long style, WXDWORD *exstyle) const 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 @@ -145,18 +132,51 @@ 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(GetLabelText(), &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)