]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/vscroll.cpp
there is no need to convert wxArrayString to wxString[] explicitly any more, wx contr...
[wxWidgets.git] / src / generic / vscroll.cpp
index bce13cb38de0d5ba24842567a79f8adef59b0fc0..a7d388a9bf4bb4af08507786f1c8db052e3a87b4 100644 (file)
 #pragma hdrstop
 #endif
 
+#ifndef WX_PRECOMP
+    #include "wx/sizer.h"
+#endif
+
 #include "wx/vscroll.h"
 
 // ----------------------------------------------------------------------------
@@ -156,6 +160,13 @@ size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast, bool full)
     return lineFirst;
 }
 
+void wxVScrolledWindow::RemoveScrollbar()
+{
+    m_lineFirst = 0;
+    m_nVisible = m_lineMax;
+    SetScrollbar(wxVERTICAL, 0, 0, 0);
+}
+
 void wxVScrolledWindow::UpdateScrollbar()
 {
     // see how many lines can we fit on screen
@@ -185,8 +196,8 @@ void wxVScrolledWindow::UpdateScrollbar()
         if ( hAll < hWindow )
         {
             // we don't need scrollbar at all
-            m_lineFirst = 0;
-            SetScrollbar(wxVERTICAL, 0, 0, 0);
+            RemoveScrollbar();
+            return;
         }
     }
 
@@ -218,8 +229,15 @@ void wxVScrolledWindow::SetLineCount(size_t count)
     m_heightTotal = EstimateTotalHeight();
 
     // recalculate the scrollbars parameters
-    m_lineFirst = 1;    // make sure it is != 0
-    ScrollToLine(0);
+    if ( count )
+    {
+        m_lineFirst = 1;    // make sure it is != 0
+        ScrollToLine(0);
+    }
+    else // no items
+    {
+        RemoveScrollbar();
+    }
 }
 
 void wxVScrolledWindow::RefreshLine(size_t line)
@@ -289,7 +307,7 @@ bool wxVScrolledWindow::Layout()
         // adjust the sizer dimensions/position taking into account the
         // virtual size and scrolled position of the window.
 
-        int w, h;
+        int w = 0, h = 0;
         GetVirtualSize(&w, &h);
 
         // x is always 0 so no variable needed