split into two programmatically (perhaps from a menu command), and unsplit
either programmatically or via the wxSplitterWindow user interface.
-Appropriate 3D shading for the Windows 95 user interface is an option.
-This is also recommended for GTK.
-
\wxheading{Window styles}
\begin{twocollist}\itemsep=0pt
\twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.}
-\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a thin black border around the window, and a black sash.}
-\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border, and a black sash.}
+\twocolitem{\windowstyle{wxSP\_3DSASH}}{Draws a 3D effect sash.}
+\twocolitem{\windowstyle{wxSP\_3DBORDER}}{Synonym for wxSP\_BORDER.}
+\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a standard border.}
+\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border (default).}
+\twocolitem{\windowstyle{wxSP\_NO\_XP\_THEME}}{Under Windows XP, switches off the attempt to draw the
+splitter using Windows XP theming, so the borders and sash will take on the pre-XP look.}
\twocolitem{\windowstyle{wxSP\_PERMIT\_UNSPLIT}}{Always allow to
unsplit, even with the minimum pane size other than zero.}
\twocolitem{\windowstyle{wxSP\_LIVE\_UPDATE}}{Don't draw XOR line but resize the child windows immediately.}
<wx/splitter.h>
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
\wxheading{Event handling}
To process input from a splitter control, use the following event handler
Processes a wxEVT\_COMMAND\_SPLITTER\_SASH\_POS\_CHANGED event.}
\twocolitem{{\bf EVT\_SPLITTER\_UNSPLIT(id, func)}}{The splitter has been just
unsplit. Processes a wxEVT\_COMMAND\_SPLITTER\_UNSPLIT event.}
-\twocolitem{{\bf EVT\_SPLITTER\_DOUBLECLICKED(id, func)}}{The sash was double
+\twocolitem{{\bf EVT\_SPLITTER\_DCLICK(id, func)}}{The sash was double
clicked. The default behaviour is to unsplit the window when this happens
(unless the minimum pane size has been set to a value greater than zero).
Processes a wxEVT\_COMMAND\_SPLITTER\_DOUBLECLICKED event.}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxSplitterWindow::wxSplitterWindow}\label{wxsplitterwindowconstr}
+\membersection{wxSplitterWindow::wxSplitterWindow}\label{wxsplitterwindowctor}
\func{}{wxSplitterWindow}{\void}
\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally},\rtfsp
\helpref{wxSplitterWindow::Create}{wxsplitterwindowcreate}
-\membersection{wxSplitterWindow::\destruct{wxSplitterWindow}}
+\membersection{wxSplitterWindow::\destruct{wxSplitterWindow}}\label{wxsplitterwindowdtor}
\func{}{\destruct{wxSplitterWindow}}{\void}
\membersection{wxSplitterWindow::Create}\label{wxsplitterwindowcreate}
-\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id}, \param{int }{x},\rtfsp
+\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id}, \rtfsp
\param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp
\param{long }{style=wxSP\_3D}, \param{const wxString\&}{ name = "splitterWindow"}}
-Creation function, for two-step construction. See \helpref{wxSplitterWindow::wxSplitterWindow}{wxsplitterwindowconstr} for
+Creation function, for two-step construction. See \helpref{wxSplitterWindow::wxSplitterWindow}{wxsplitterwindowctor} for
details.
\membersection{wxSplitterWindow::GetMinimumPaneSize}\label{wxsplitterwindowgetminimumpanesize}
\helpref{wxSplitterWindow::SetMinimumPaneSize}{wxsplitterwindowsetminimumpanesize}
+\membersection{wxSplitterWindow::GetSashGravity}\label{wxsplitterwindowgetsashgravity}
+
+\func{double}{GetSashGravity}{\void}
+
+Returns the current sash gravity.
+
+\wxheading{See also}
+
+\helpref{wxSplitterWindow::SetSashGravity}{wxsplitterwindowsetsashgravity}
+
\membersection{wxSplitterWindow::GetSashPosition}\label{wxsplitterwindowgetsashposition}
\func{int}{GetSashPosition}{\void}
\func{void}{Initialize}{\param{wxWindow* }{window}}
-Initializes the splitter window to have one pane.
+Initializes the splitter window to have one pane. The child window is
+shown if it is currently hidden.
\wxheading{Parameters}
\constfunc{bool}{IsSplit}{\void}
-Returns TRUE if the window is split, FALSE otherwise.
+Returns true if the window is split, false otherwise.
\membersection{wxSplitterWindow::OnDoubleClickSash}\label{wxsplitterwindowondoubleclicksash}
\func{virtual bool}{OnSashPositionChange}{\param{int }{newSashPosition}}
Application-overridable function called when the sash position is changed by
-user. It may return FALSE to prevent the change or TRUE to allow it.
+user. It may return false to prevent the change or true to allow it.
\wxheading{Parameters}
(if any). It is valid to call this function whether the splitter has two
windows or only one.
-Both parameters should be non NULL and {\it winOld} must specify one of the
+Both parameters should be non-NULL and {\it winOld} must specify one of the
windows managed by the splitter. If the parameters are incorrect or the window
-couldn't be replaced, FALSE is returned. Otherwise the function will return
-TRUE, but please notice that it will not delete the replaced window and you
+couldn't be replaced, false is returned. Otherwise the function will return
+true, but please notice that it will not delete the replaced window and you
may wish to do it yourself.
\wxheading{See also}
\helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically}\\
\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}
+\membersection{wxSplitterWindow::SetSashGravity}\label{wxsplitterwindowsetsashgravity}
+
+\func{void}{SetSashGravity}{\param{double }{gravity}}
+
+Sets the sash gravity.
+
+\wxheading{Parameters}
+
+\docparam{gravity}{The sash gravity. Value between 0.0 and 1.0.}
+
+
+\wxheading{Remarks}
+Gravity is real factor which controls position of sash while resizing wxSplitterWindow.
+Gravity tells wxSplitterWindow how much will left/top window grow while resizing.
+
+Example values:
+\begin{itemize}\itemsep=0pt
+\item{ 0.0 - only the bottom/right window is automatically resized}
+\item{ 0.5 - both windows grow by equal size}
+\item{ 1.0 - only left/top window grows}
+\end{itemize}
+
+Gravity should be a real value between 0.0 and 1.0.
+
+Default value of sash gravity is 0.0. That value is compatible with previous
+(before gravity was introduced) behaviour of wxSplitterWindow.
+
+\wxheading{See also}
+
+\helpref{wxSplitterWindow::GetSashGravity}{wxsplitterwindowgetsashgravity}
+
\membersection{wxSplitterWindow::SetSashPosition}\label{wxsplitterwindowsetsashposition}
-\func{void}{SetSashPosition}{\param{int }{position}, \param{const bool}{ redraw = TRUE}}
+\func{void}{SetSashPosition}{\param{int }{position}, \param{const bool}{ redraw = true}}
Sets the sash position.
\docparam{position}{The sash position in pixels.}
-\docparam{redraw}{If TRUE, resizes the panes and redraws the sash and border.}
+\docparam{redraw}{If true, resizes the panes and redraws the sash and border.}
\wxheading{Remarks}
\helpref{wxSplitterWindow::GetSashPosition}{wxsplitterwindowgetsashposition}
+\membersection{wxSplitterWindow::SetSashSize}\label{wxsplitterwindowsetsashsize}
+
+\func{void}{SetSashSize}{\param{int }{size}}
+
+Sets the sash size. Normally, the sash size is determined according to the metrics
+of each platform, but the application can override this, for example to show
+a thin sash that the user is not expected to drag. If {\it size} is more -1,
+the custom sash size will be used.
+
\membersection{wxSplitterWindow::SetMinimumPaneSize}\label{wxsplitterwindowsetminimumpanesize}
\func{void}{SetMinimumPaneSize}{\param{int }{paneSize}}
\func{bool}{SplitHorizontally}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2},
\param{int}{ sashPosition = 0}}
-Initializes the top and bottom panes of the splitter window.
+Initializes the top and bottom panes of the splitter window. The
+child windows are shown if they are currently hidden.
\wxheading{Parameters}
\docparam{window2}{The bottom pane.}
\docparam{sashPosition}{The initial position of the sash. If this value is
-positive, it specifies the size of the upper pane. If it's negative, it's
+positive, it specifies the size of the upper pane. If it is negative, its
absolute value gives the size of the lower pane. Finally, specify 0 (default)
to choose the default position (half of the total window height).}
\wxheading{Return value}
-TRUE if successful, FALSE otherwise (the window was already split).
+true if successful, false otherwise (the window was already split).
\wxheading{Remarks}
\func{bool}{SplitVertically}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2},
\param{int}{ sashPosition = 0}}
-Initializes the left and right panes of the splitter window.
+Initializes the left and right panes of the splitter window. The
+child windows are shown if they are currently hidden.
\wxheading{Parameters}
\docparam{window2}{The right pane.}
\docparam{sashPosition}{The initial position of the sash. If this value is
-positive, it specifies the size of the left pane. If it's negative, it's
+positive, it specifies the size of the left pane. If it is negative, it is
absolute value gives the size of the right pane. Finally, specify 0 (default)
to choose the default position (half of the total window width).}
\wxheading{Return value}
-TRUE if successful, FALSE otherwise (the window was already split).
+true if successful, false otherwise (the window was already split).
\wxheading{Remarks}
\wxheading{Return value}
-TRUE if successful, FALSE otherwise (the window was not split).
+true if successful, false otherwise (the window was not split).
\wxheading{Remarks}
\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp
\helpref{wxSplitterWindow::IsSplit}{wxsplitterwindowissplit}, \helpref{wxSplitterWindow::OnUnsplit}{wxsplitterwindowonunsplit}
+\membersection{wxSplitterWindow::UpdateSize}\label{wxsplitterwindowupdatesize}
+
+\func{void}{UpdateSize}{\void}
+
+Causes any pending sizing of the sash and child panes to take place
+immediately.
+
+Such resizing normally takes place in idle time, in order
+to wait for layout to be completed. However, this can cause
+unacceptable flicker as the panes are resized after the window has been
+shown. To work around this, you can perform window layout (for
+example by sending a size event to the parent window), and then
+call this function, before showing the top-level window.
+