From c79d40fe1e07a2bbb9aa92b6978a6271b269fbf4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 30 Oct 2011 19:48:40 +0000 Subject: [PATCH] Don't apply gravity before requested sash position was set in wxSplitterWindow. Gravity should take effect only after the originally requested sash position is set as otherwise it's not really taken into account. Closes #13508. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/splitter.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index 1b8025182f..5b0bd620a8 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -435,7 +435,12 @@ void wxSplitterWindow::OnSize(wxSizeEvent& event) return; } - if ( m_windowTwo ) + // Update the sash position if needed. + // + // Notice that we shouldn't do this if the sash position requested by user + // couldn't be set yet as it would never be taken into account at all if we + // modified it before this happens. + if ( m_windowTwo && m_requestedSashPosition == INT_MAX ) { int w, h; GetClientSize(&w, &h); @@ -444,13 +449,10 @@ void wxSplitterWindow::OnSize(wxSizeEvent& event) int old_size = m_splitMode == wxSPLIT_VERTICAL ? m_lastSize.x : m_lastSize.y; - // Don't do anything if the size didn't really change. In particular, - // it is important that we don't reset our sash position because it's - // out of current range in this case as otherwise the really requested - // position would be lost and never set. Wait until we get a real size - // event with our non-initial size to do it. + // Don't do anything if the size didn't really change. if ( size != old_size ) { + // Apply gravity if we use it. int delta = (int) ( (size - old_size)*m_sashGravity ); if ( delta != 0 ) { -- 2.45.2