wxBorder wxWindowMSW::GetDefaultBorderForControl() const
{
- // we want to automatically give controls a sunken style (confusingly,
- // it may not really mean sunken at all as we map it to WS_EX_CLIENTEDGE
- // which is not sunken at all under Windows XP -- rather, just the default)
+ return wxBORDER_THEME;
+}
+wxBorder wxWindowMSW::GetDefaultBorder() const
+{
+ return wxWindowBase::GetDefaultBorder();
+}
+
+// Translate wxBORDER_THEME (and other border styles if necessary to the value
+// that makes most sense for this Windows environment
+wxBorder wxWindowMSW::TranslateBorder(wxBorder border) const
+{
#if defined(__POCKETPC__) || defined(__SMARTPHONE__)
- return wxBORDER_SIMPLE;
+ if (border == wxBORDER_THEME || border == wxBORDER_SUNKEN || border == wxBORDER_SIMPLE)
+ return wxBORDER_SIMPLE;
+ else
+ return wxBORDER_NONE;
#else
#if wxUSE_UXTHEME
- if (CanApplyThemeBorder())
+ if (border == wxBORDER_THEME)
{
- wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
- if (theme)
- return wxBORDER_THEME;
+ if (CanApplyThemeBorder())
+ {
+ wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
+ if (theme)
+ return wxBORDER_THEME;
+ }
}
#endif
- return wxBORDER_SUNKEN;
+ return border;
#endif
-}
-wxBorder wxWindowMSW::GetDefaultBorder() const
-{
- return GetDefaultBorderForControl();
+ return border;
}
+
WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
{
// translate common wxWidgets styles to Windows ones
if ( flags & wxHSCROLL )
style |= WS_HSCROLL;
- const wxBorder border = GetBorder(flags);
+ const wxBorder border = TranslateBorder(GetBorder(flags));
+
+ // After translation, border is now optimized for the specific version of Windows
+ // and theme engine presence.
// WS_BORDER is only required for wxBORDER_SIMPLE
if ( border == wxBORDER_SIMPLE )
case WM_NCCALCSIZE:
{
wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
- if (theme && GetBorder() == wxBORDER_THEME)
+ const wxBorder border = TranslateBorder(GetBorder());
+ if (theme && border == wxBORDER_THEME)
{
// first ask the widget to calculate the border size
rc.result = MSWDefWindowProc(message, wParam, lParam);
case WM_NCPAINT:
{
wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
- if (theme && GetBorder() == wxBORDER_THEME)
+ const wxBorder border = TranslateBorder(GetBorder());
+ if (theme && border == wxBORDER_THEME)
{
// first ask the widget to paint its non-client area, such as scrollbars, etc.
rc.result = MSWDefWindowProc(message, wParam, lParam);