as opposed to wxBORDER_NONE which may or may not show a border, depending on control.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48761
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
\twocolwidtha{5cm}%
\begin{twocollist}\itemsep=0pt
\twocolwidtha{5cm}%
\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxBORDER\_DEFAULT}}{The window class will decide the kind of border to show, if any.}
\twocolitem{\windowstyle{wxBORDER\_SIMPLE}}{Displays a thin border around the window. wxSIMPLE\_BORDER is the old name
for this style. }
\twocolitem{\windowstyle{wxBORDER\_SIMPLE}}{Displays a thin border around the window. wxSIMPLE\_BORDER is the old name
for this style. }
-\twocolitem{\windowstyle{wxBORDER\_DOUBLE}}{Displays a double border. wxDOUBLE\_BORDER is the old name for this style. Windows and Mac only.}
\twocolitem{\windowstyle{wxBORDER\_SUNKEN}}{Displays a sunken border. wxSUNKEN\_BORDER is the old name for this style.}
\twocolitem{\windowstyle{wxBORDER\_RAISED}}{Displays a raised border. wxRAISED\_BORDER is the old name for this style. }
\twocolitem{\windowstyle{wxBORDER\_STATIC}}{Displays a border suitable for a static control. wxSTATIC\_BORDER is the old name for this style. Windows only. }
\twocolitem{\windowstyle{wxBORDER\_SUNKEN}}{Displays a sunken border. wxSUNKEN\_BORDER is the old name for this style.}
\twocolitem{\windowstyle{wxBORDER\_RAISED}}{Displays a raised border. wxRAISED\_BORDER is the old name for this style. }
\twocolitem{\windowstyle{wxBORDER\_STATIC}}{Displays a border suitable for a static control. wxSTATIC\_BORDER is the old name for this style. Windows only. }
-\twocolitem{\windowstyle{wxBORDER\_THEME}}{Displays a themed border where possible. Currently this has an effect on Windows XP and above only.
-For more information on themed borders, please see \helpref{Themed borders on Windows}{wxmswthemedborders}.}
+\twocolitem{\windowstyle{wxBORDER\_THEME}}{Displays a native border suitable for a control, on the current platform. On Windows XP or Vista, this will be a themed border; on most other platforms
+a sunken border will be used. For more information for themed borders on Windows, please see \helpref{Themed borders on Windows}{wxmswthemedborders}.}
\twocolitem{\windowstyle{wxBORDER\_NONE}}{Displays no border, overriding the default border style for the window. wxNO\_BORDER is the old name for this style.}
\twocolitem{\windowstyle{wxBORDER\_NONE}}{Displays no border, overriding the default border style for the window. wxNO\_BORDER is the old name for this style.}
+\twocolitem{\windowstyle{wxBORDER\_DOUBLE}}{This style is obsolete and should not be used.}
\twocolitem{\windowstyle{wxTRANSPARENT\_WINDOW}}{The window is transparent, that is, it will not receive paint
events. Windows only.}
\twocolitem{\windowstyle{wxTAB\_TRAVERSAL}}{Use this to enable tab traversal for non-dialog windows.}
\twocolitem{\windowstyle{wxTRANSPARENT\_WINDOW}}{The window is transparent, that is, it will not receive paint
events. Windows only.}
\twocolitem{\windowstyle{wxTAB\_TRAVERSAL}}{Use this to enable tab traversal for non-dialog windows.}
the control themed borders automatically, where previously they would take the Windows 95-style
sunken border. Other native controls such as wxTextCtrl in non-rich edit mode, and wxComboBox,
already paint themed borders where appropriate. To use themed borders on other windows, such
the control themed borders automatically, where previously they would take the Windows 95-style
sunken border. Other native controls such as wxTextCtrl in non-rich edit mode, and wxComboBox,
already paint themed borders where appropriate. To use themed borders on other windows, such
-as wxPanel, pass the wxBORDER\_THEME style, or pass no border style.
+as wxPanel, pass the wxBORDER\_THEME style, or (apart from wxPanel) pass no border style.
-Note that in wxWidgets 2.9 and above, wxBORDER\_THEME is defined to be 0 and it is not necessary
-to pass the border style explicitly: wxWidgets will deduce the correct border style itself if there
-is none supplied. Because of the requirements of binary compatibility, this automatic border
-capability could not be put into wxWidgets 2.8 except for built-in, native controls. So in 2.8, the border
-must be specified for custom controls and windows.
-
-Since specifying wxBORDER\_THEME is defined as 0 and is the equivalent of abstaining on the
-border style decision, on non-Windows platforms a suitable border style will be chosen.
+In general, specifying wxBORDER\_THEME will cause a border of some kind to be used, chosen by the platform
+and control class. To leave the border decision entirely to wxWidgets, pass wxBORDER\_DEFAULT.
This is not to be confused with specifying wxBORDER\_NONE, which says that there should
definitely be {\it no} border.
This is not to be confused with specifying wxBORDER\_NONE, which says that there should
definitely be {\it no} border.
The way that wxMSW decides whether to apply a themed border is as follows.
The theming code calls wxWindow::GetBorder() to obtain a border. If no border style has been
passed to the window constructor, GetBorder() calls GetDefaultBorder() for this window.
The way that wxMSW decides whether to apply a themed border is as follows.
The theming code calls wxWindow::GetBorder() to obtain a border. If no border style has been
passed to the window constructor, GetBorder() calls GetDefaultBorder() for this window.
+If wxBORDER\_THEME was passed to the window constructor, GetBorder() calls GetDefaultBorderForControl().
+
The implementation of wxWindow::GetDefaultBorder() on wxMSW calls wxWindow::CanApplyThemeBorder()
which is a virtual function that tells wxWidgets whether a control can have a theme
applied explicitly (some native controls already paint a theme in which case we should not
The implementation of wxWindow::GetDefaultBorder() on wxMSW calls wxWindow::CanApplyThemeBorder()
which is a virtual function that tells wxWidgets whether a control can have a theme
applied explicitly (some native controls already paint a theme in which case we should not
wxBORDER_RAISED = 0x04000000,
wxBORDER_SUNKEN = 0x08000000,
wxBORDER_DOUBLE = 0x10000000, /* deprecated */
wxBORDER_RAISED = 0x04000000,
wxBORDER_SUNKEN = 0x08000000,
wxBORDER_DOUBLE = 0x10000000, /* deprecated */
- wxBORDER_THEME = wxBORDER_DEFAULT,
+ wxBORDER_THEME = wxBORDER_DOUBLE,
/* a mask to extract border style from the combination of flags */
wxBORDER_MASK = 0x1f200000
/* a mask to extract border style from the combination of flags */
wxBORDER_MASK = 0x1f200000
* since they are unlikely to be needed in a public header.
*/
#if defined(__LP64__) && __LP64__
* since they are unlikely to be needed in a public header.
*/
#if defined(__LP64__) && __LP64__
- typedef double CGFloat;
+ typedef double CGFloat;
#endif
#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64)
#endif
#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64)
// this allows you to implement standard control borders without
// repeating the code in different classes that are not derived from
// wxControl
// this allows you to implement standard control borders without
// repeating the code in different classes that are not derived from
// wxControl
- virtual wxBorder GetDefaultBorderForControl() const { return wxWindowBase::GetDefaultBorder(); }
+ virtual wxBorder GetDefaultBorderForControl() const { return wxBORDER_SUNKEN; }
// Get the default size for the new window if no explicit size given. TLWs
// have their own default size so this is just for non top-level windows.
// Get the default size for the new window if no explicit size given. TLWs
// have their own default size so this is just for non top-level windows.
{
border = GetDefaultBorder();
}
{
border = GetDefaultBorder();
}
+ else if ( border == wxBORDER_THEME )
+ {
+ border = GetDefaultBorderForControl();
+ }
- if ((event_type == wxEVT_LEFT_DOWN) && !win->IsOfStandardClass() &&
+ if ((event_type == wxEVT_LEFT_DOWN) && !win->IsOfStandardClass() &&
(g_focusWindow != win) /* && win->IsFocusable() */)
{
win->SetFocus();
(g_focusWindow != win) /* && win->IsFocusable() */)
{
win->SetFocus();
// Disable default focus handling for custom windows
// since the default GTK+ handler issues a repaint
if ( has_wxwindow )
// Disable default focus handling for custom windows
// since the default GTK+ handler issues a repaint
if ( has_wxwindow )
}
// continue with normal processing
}
// continue with normal processing
}
//-----------------------------------------------------------------------------
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
#ifdef __WXGTK210__
//-----------------------------------------------------------------------------
#ifdef __WXGTK210__
gtkstyle = GTK_SHADOW_OUT;
else if (wxstyle & wxBORDER_SUNKEN)
gtkstyle = GTK_SHADOW_IN;
gtkstyle = GTK_SHADOW_OUT;
else if (wxstyle & wxBORDER_SUNKEN)
gtkstyle = GTK_SHADOW_IN;
else if (wxstyle & wxBORDER_DOUBLE)
gtkstyle = GTK_SHADOW_ETCHED_IN;
else if (wxstyle & wxBORDER_DOUBLE)
gtkstyle = GTK_SHADOW_ETCHED_IN;
else //default
gtkstyle = GTK_SHADOW_IN;
else //default
gtkstyle = GTK_SHADOW_IN;
- case wxBORDER_DEFAULT: // also wxBORDER_THEME
- break;
+ default:
+ case wxBORDER_DEFAULT:
+ wxFAIL_MSG( _T("unknown border style") );
+ // fall through
case wxBORDER_NONE:
case wxBORDER_SIMPLE:
case wxBORDER_NONE:
case wxBORDER_SIMPLE:
break;
case wxBORDER_STATIC:
break;
case wxBORDER_STATIC:
style &= ~WS_BORDER;
break;
style &= ~WS_BORDER;
break;
- default:
- wxFAIL_MSG( _T("unknown border style") );
- break;
-
- case wxBORDER_DOUBLE:
- *exstyle |= WS_EX_DLGMODALFRAME;
- break;
+// case wxBORDER_DOUBLE:
+// *exstyle |= WS_EX_DLGMODALFRAME;
+// break;
}
// wxUniv doesn't use Windows dialog navigation functions at all
}
// wxUniv doesn't use Windows dialog navigation functions at all