m_oldX = 0;
m_oldY = 0;
m_sashStart = 0;
- m_sashPosition = m_requestedSashPosition = 0;
+ m_sashPosition = 0;
+ m_requestedSashPosition = INT_MAX;
m_sashGravity = 0.0;
m_lastSize = wxSize(0,0);
- m_checkRequestedSashPosition = false;
m_minimumPaneSize = 0;
m_sashCursorWE = wxCursor(wxCURSOR_SIZEWE);
m_sashCursorNS = wxCursor(wxCURSOR_SIZENS);
{
wxWindow::OnInternalIdle();
- // if this is the first idle time after a sash position has potentially
- // been set, allow SizeWindows to check for a requested size.
- if (!m_checkRequestedSashPosition)
+ // We may need to update the children sizes in two cases: either because
+ // we're in the middle of a live update as indicated by m_needUpdating or
+ // because we have a requested but not yet set sash position as indicated
+ // by m_requestedSashPosition having a valid value.
+ if ( m_needUpdating )
{
- m_checkRequestedSashPosition = true;
- SizeWindows();
- return; // it won't needUpdating in this case
+ m_needUpdating = false;
}
-
- if (m_needUpdating)
+ else if ( m_requestedSashPosition == INT_MAX )
{
- m_needUpdating = false;
- SizeWindows();
+ // We don't need to resize the children.
+ return;
}
+
+ SizeWindows();
}
void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
void wxSplitterWindow::SizeWindows()
{
// check if we have delayed setting the real sash position
- if ( m_checkRequestedSashPosition && m_requestedSashPosition != INT_MAX )
+ if ( m_requestedSashPosition != INT_MAX )
{
int newSashPosition = ConvertSashPosition(m_requestedSashPosition);
if ( newSashPosition != m_sashPosition )
// remember the sash position we want to set for later if we can't set it
// right now (e.g. because the window is too small)
m_requestedSashPosition = position;
- m_checkRequestedSashPosition = false;
DoSetSashPosition(ConvertSashPosition(position));
// window is shown, if you know the overall size is correct.
void wxSplitterWindow::UpdateSize()
{
- m_checkRequestedSashPosition = true;
SizeWindows();
- m_checkRequestedSashPosition = false;
}
bool wxSplitterWindow::DoSendEvent(wxSplitterEvent& event)