From c1aa5517acff9ce039adcd6502db2e88cdd886c7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 26 Apr 2006 00:17:52 +0000 Subject: [PATCH] remove the vertical scrollbar completely if the control is empty git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/vscroll.h | 3 +++ src/generic/vscroll.cpp | 22 ++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/include/wx/vscroll.h b/include/wx/vscroll.h index 1d29f56405..33fc7aa1f8 100644 --- a/include/wx/vscroll.h +++ b/include/wx/vscroll.h @@ -188,6 +188,9 @@ protected: // update the thumb size shown by the scrollbar void UpdateScrollbar(); + // remove the scrollbar completely because we don't need it + void RemoveScrollbar(); + private: // common part of all ctors void Init(); diff --git a/src/generic/vscroll.cpp b/src/generic/vscroll.cpp index 609d6e0f52..59a65f856e 100644 --- a/src/generic/vscroll.cpp +++ b/src/generic/vscroll.cpp @@ -160,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 @@ -189,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; } } @@ -222,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) -- 2.47.2