]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/splitter.cpp
because gcc is dumb and can't tell the difference between a std::string and a wxString
[wxWidgets.git] / src / generic / splitter.cpp
index a67ff0fcd43b22c6a95853d5f66e80418bc2c47e..11ab7e9734822f083470c67ae5d0f1d1a1cafe67 100644 (file)
     #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);