X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b49ccf8d66e2568e2b0de85c25b406aad39f3b1..18d491685c8e13a5536f2f9dd6c8041c110a76d9:/src/generic/vscroll.cpp?ds=inline diff --git a/src/generic/vscroll.cpp b/src/generic/vscroll.cpp index 4a9cc64d7c..f0c58c61b8 100644 --- a/src/generic/vscroll.cpp +++ b/src/generic/vscroll.cpp @@ -202,6 +202,35 @@ void wxVScrolledWindow::RefreshLine(size_t line) RefreshRect(rect); } +void wxVScrolledWindow::RefreshLines(size_t from, size_t to) +{ + wxASSERT_MSG( from <= to, _T("RefreshLines(): empty range") ); + + // clump the range to just the visible lines -- it is useless to refresh + // the other ones + if ( from < GetFirstVisibleLine() ) + from = GetFirstVisibleLine(); + + if ( to > GetLastVisibleLine() ) + to = GetLastVisibleLine(); + + // calculate the rect occupied by these lines on screen + wxRect rect; + rect.width = GetClientSize().x; + for ( size_t nBefore = GetFirstVisibleLine(); nBefore < from; nBefore++ ) + { + rect.y += OnGetLineHeight(nBefore); + } + + for ( size_t nBetween = from; nBetween <= to; nBetween++ ) + { + rect.height += OnGetLineHeight(nBetween); + } + + // do refresh it + RefreshRect(rect); +} + void wxVScrolledWindow::RefreshAll() { UpdateScrollbar();