X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ca65c0440a7163e4e37e48b1c4329709d722db47..0148745bb7a9b1e1046229577fbd802eb9f03e8f:/src/generic/splitter.cpp diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index a67ff0fcd4..11ab7e9734 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -36,6 +36,10 @@ #include "wx/settings.h" #endif +#ifdef __WXMAC__ + #include "wx/mac/private.h" +#endif + #include "wx/renderer.h" #include "wx/splitter.h" @@ -200,8 +204,11 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) // following the mouse movement while it drags the sash, without it we only // draw the sash at the new position but only resize the windows when the // dragging is finished +#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX == 1 + bool isLive = true ; +#else bool isLive = (GetWindowStyleFlag() & wxSP_LIVE_UPDATE) != 0; - +#endif if (event.LeftDown()) { if ( SashHitTest(x, y) ) @@ -560,7 +567,7 @@ int wxSplitterWindow::AdjustSashPosition(int sashPos) const if ( minSize == -1 || m_minimumPaneSize > minSize ) minSize = m_minimumPaneSize; - int maxSize = window_size - minSize - GetBorderSize(); + int maxSize = window_size - minSize - GetBorderSize() - GetSashSize(); if ( sashPos > maxSize ) sashPos = maxSize; } @@ -582,6 +589,12 @@ bool wxSplitterWindow::DoSetSashPosition(int sashPos) void wxSplitterWindow::SetSashPositionAndNotify(int sashPos) { + // we must reset the request here, otherwise the sash would be stuck at + // old position if the user attempted to move the sash after invalid + // (e.g. smaller than minsize) sash position was requested using + // SetSashPosition(): + m_requestedSashPosition = INT_MAX; + if ( DoSetSashPosition(sashPos) ) { wxSplitterEvent event(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, this);