X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/61bb5a9c1b200a43f1446c3873cfc1d5acda0e28..24aab8e81a8627802e4111d9c99a50ece8d0026e:/src/generic/vscroll.cpp diff --git a/src/generic/vscroll.cpp b/src/generic/vscroll.cpp index bce13cb38d..a7d388a9bf 100644 --- a/src/generic/vscroll.cpp +++ b/src/generic/vscroll.cpp @@ -24,6 +24,10 @@ #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