Avoid too many sash position changed events when splitter is resized.
We could call SetSashPositionAndNotify() twice in a row which was probably unexpected and possibly wasteful, if the user code did anything non trivial in response to this event. Just call it once after we're certain which sash position do we want to set. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -451,20 +451,23 @@ void wxSplitterWindow::OnSize(wxSizeEvent& event)
|
||||
// Don't do anything if the size didn't really change.
|
||||
if ( size != old_size )
|
||||
{
|
||||
int newPosition = -1;
|
||||
|
||||
// Apply gravity if we use it.
|
||||
int delta = (int) ( (size - old_size)*m_sashGravity );
|
||||
if ( delta != 0 )
|
||||
{
|
||||
int newPosition = m_sashPosition + delta;
|
||||
newPosition = m_sashPosition + delta;
|
||||
if( newPosition < m_minimumPaneSize )
|
||||
newPosition = m_minimumPaneSize;
|
||||
SetSashPositionAndNotify(newPosition);
|
||||
}
|
||||
|
||||
// Also check if the second window became too small.
|
||||
int adjustedPosition = AdjustSashPosition(m_sashPosition);
|
||||
if ( adjustedPosition != m_sashPosition )
|
||||
SetSashPositionAndNotify(adjustedPosition);
|
||||
newPosition = AdjustSashPosition(newPosition == -1
|
||||
? m_sashPosition
|
||||
: newPosition);
|
||||
if ( newPosition != m_sashPosition )
|
||||
SetSashPositionAndNotify(newPosition);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user