]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/splitter.cpp
fixed a compilation warning about signed/unsigned comparison
[wxWidgets.git] / src / generic / splitter.cpp
index 3da3fa0472a55dde7388b311a2b6d3497ac4e3df..5e293514bdd3b96e236bdf6fd24bc98ff39a10f0 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        splitter.cpp
+// Name:        src/generic/splitter.cpp
 // Purpose:     wxSplitterWindow implementation
 // Author:      Julian Smart
 // Modified by:
 // Purpose:     wxSplitterWindow implementation
 // Author:      Julian Smart
 // Modified by:
@@ -243,7 +243,7 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
                 m_windowOne = m_windowTwo;
                 m_windowTwo = (wxWindow *) NULL;
                 OnUnsplit(removedWindow);
                 m_windowOne = m_windowTwo;
                 m_windowTwo = (wxWindow *) NULL;
                 OnUnsplit(removedWindow);
-                DoSetSashPosition(0);
+                SetSashPositionAndNotify(0);
             }
             else if ( posSashNew == GetWindowSize() )
             {
             }
             else if ( posSashNew == GetWindowSize() )
             {
@@ -251,16 +251,16 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
                 wxWindow *removedWindow = m_windowTwo;
                 m_windowTwo = (wxWindow *) NULL;
                 OnUnsplit(removedWindow);
                 wxWindow *removedWindow = m_windowTwo;
                 m_windowTwo = (wxWindow *) NULL;
                 OnUnsplit(removedWindow);
-                DoSetSashPosition(0);
+                SetSashPositionAndNotify(0);
             }
             else
             {
             }
             else
             {
-                DoSetSashPosition(posSashNew);
+                SetSashPositionAndNotify(posSashNew);
             }
         }
         else
         {
             }
         }
         else
         {
-            DoSetSashPosition(posSashNew);
+            SetSashPositionAndNotify(posSashNew);
         }
 
         SizeWindows();
         }
 
         SizeWindows();
@@ -343,7 +343,7 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
         }
         else
         {
         }
         else
         {
-            DoSetSashPosition(posSashNew);
+            SetSashPositionAndNotify(posSashNew);
             m_needUpdating = TRUE;
         }
     }
             m_needUpdating = TRUE;
         }
     }
@@ -384,7 +384,7 @@ void wxSplitterWindow::OnSize(wxSizeEvent& event)
         iconized = FALSE;
     }
 #endif
         iconized = FALSE;
     }
 #endif
-    
+
     if ( iconized )
     {
         event.Skip();
     if ( iconized )
     {
         event.Skip();
@@ -399,12 +399,12 @@ void wxSplitterWindow::OnSize(wxSizeEvent& event)
         if ( m_splitMode == wxSPLIT_VERTICAL )
         {
             if ( m_sashPosition >= (cw - 5) )
         if ( m_splitMode == wxSPLIT_VERTICAL )
         {
             if ( m_sashPosition >= (cw - 5) )
-                DoSetSashPosition(wxMax(10, cw - 40));
+                SetSashPositionAndNotify(wxMax(10, cw - 40));
         }
         else // m_splitMode == wxSPLIT_HORIZONTAL
         {
             if ( m_sashPosition >= (ch - 5) )
         }
         else // m_splitMode == wxSPLIT_HORIZONTAL
         {
             if ( m_sashPosition >= (ch - 5) )
-                DoSetSashPosition(wxMax(10, ch - 40));
+                SetSashPositionAndNotify(wxMax(10, ch - 40));
         }
     }
 
         }
     }
 
@@ -712,14 +712,22 @@ int wxSplitterWindow::AdjustSashPosition(int sashPos) const
     return sashPos;
 }
 
     return sashPos;
 }
 
-void wxSplitterWindow::DoSetSashPosition(int sashPos)
+bool wxSplitterWindow::DoSetSashPosition(int sashPos)
 {
     int newSashPosition = AdjustSashPosition(sashPos);
 
 {
     int newSashPosition = AdjustSashPosition(sashPos);
 
-    if ( newSashPosition != m_sashPosition )
-    {
-        m_sashPosition = newSashPosition;
+    if ( newSashPosition == m_sashPosition )
+        return FALSE;
 
 
+    m_sashPosition = newSashPosition;
+
+    return TRUE;
+}
+
+void wxSplitterWindow::SetSashPositionAndNotify(int sashPos)
+{
+    if ( DoSetSashPosition(sashPos) )
+    {
         wxSplitterEvent event(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, this);
         event.m_data.pos = m_sashPosition;
 
         wxSplitterEvent event(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, this);
         event.m_data.pos = m_sashPosition;
 
@@ -753,7 +761,7 @@ void wxSplitterWindow::SizeWindows()
 
     if ( GetWindow1() && !GetWindow2() )
     {
 
     if ( GetWindow1() && !GetWindow2() )
     {
-        GetWindow1()->SetSize(GetBorderSize(), GetBorderSize(), 
+        GetWindow1()->SetSize(GetBorderSize(), GetBorderSize(),
                               w - 2*GetBorderSize(), h - 2*GetBorderSize());
     }
     else if ( GetWindow1() && GetWindow2() )
                               w - 2*GetBorderSize(), h - 2*GetBorderSize());
     }
     else if ( GetWindow1() && GetWindow2() )
@@ -792,6 +800,9 @@ void wxSplitterWindow::SizeWindows()
 // Set pane for unsplit window
 void wxSplitterWindow::Initialize(wxWindow *window)
 {
 // Set pane for unsplit window
 void wxSplitterWindow::Initialize(wxWindow *window)
 {
+    wxASSERT_MSG( window->GetParent() == this,
+                  _T("windows in the splitter should have it as parent!") );
+
     m_windowOne = window;
     m_windowTwo = (wxWindow *) NULL;
     DoSetSashPosition(0);
     m_windowOne = window;
     m_windowTwo = (wxWindow *) NULL;
     DoSetSashPosition(0);
@@ -807,6 +818,9 @@ bool wxSplitterWindow::DoSplit(wxSplitMode mode,
     if ( IsSplit() )
         return FALSE;
 
     if ( IsSplit() )
         return FALSE;
 
+    wxASSERT_MSG( window1->GetParent() == this && window2->GetParent() == this,
+                  _T("windows in the splitter should have it as parent!") );
+
     m_splitMode = mode;
     m_windowOne = window1;
     m_windowTwo = window2;
     m_splitMode = mode;
     m_windowOne = window1;
     m_windowTwo = window2;