]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/sashwin.cpp
Doc/distribution script mods
[wxWidgets.git] / src / generic / sashwin.cpp
index a808264d02be01f497dfa1b551d46300d28091d3..f567e1113d4a3f6947cb5ce2d607d4ab5acf9e5e 100644 (file)
@@ -73,6 +73,7 @@ void wxSashWindow::Init()
     m_maximumPaneSizeY = 10000;
     m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE);
     m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS);
+    m_mouseCaptured = FALSE;
 
     // Eventually, we'll respond to colour change messages
     InitColours();
@@ -97,7 +98,8 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
 
     // reset the cursor
 #if defined(__WXMOTIF__) || defined(__WXGTK__)
-    SetCursor(* wxSTANDARD_CURSOR);
+    // Not necessary and in fact inhibits proper cursor setting (JACS 8/2000)
+    //SetCursor(* wxSTANDARD_CURSOR);
 #endif
 #ifdef __WXMSW__
     SetCursor(wxNullCursor);
@@ -106,6 +108,7 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
     if (event.LeftDown())
     {
         CaptureMouse();
+        m_mouseCaptured = TRUE;
 
         if ( sashHit != wxSASH_NONE )
         {
@@ -144,7 +147,10 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
     else if ( event.LeftUp() && m_dragMode == wxSASH_DRAG_LEFT_DOWN )
     {
         // Wasn't a proper drag
-        ReleaseMouse();
+        if (m_mouseCaptured)
+            ReleaseMouse();
+        m_mouseCaptured = FALSE;
+
         wxScreenDC::EndDrawingOnTop();
         m_dragMode = wxSASH_DRAG_NONE;
         m_draggingEdge = wxSASH_NONE;
@@ -153,7 +159,10 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
     {
         // We can stop dragging now and see what we've got.
         m_dragMode = wxSASH_DRAG_NONE;
-        ReleaseMouse();
+        if (m_mouseCaptured)
+            ReleaseMouse();
+        m_mouseCaptured = FALSE;
+
         // Erase old tracker
         DrawSashTracker(m_draggingEdge, m_oldX, m_oldY);
 
@@ -273,7 +282,9 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
     }
     else if ( event.LeftUp() )
     {
-        ReleaseMouse();
+        if (m_mouseCaptured)
+           ReleaseMouse();
+        m_mouseCaptured = FALSE;
     }
     else if (event.Moving() && !event.Dragging())
     {
@@ -645,7 +656,7 @@ void wxSashWindow::SizeWindows()
 void wxSashWindow::InitColours()
 {
     // Shadow colours
-#if defined(__WIN95__)
+#ifndef __WIN16__
     m_faceColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
     m_mediumShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW);
     m_darkShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW);