added RefreshLines()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21039 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2003-06-11 11:37:52 +00:00
parent e135f09367
commit ae0f022346
2 changed files with 32 additions and 0 deletions

View File

@ -93,6 +93,9 @@ public:
// redraw the specified line
void RefreshLine(size_t line);
// redraw all lines in the specified range (inclusive)
void RefreshLines(size_t from, size_t to);
// return the item at the specified (in physical coordinates) position or
// wxNOT_FOUND if none, i.e. if it is below the last item
int HitTest(wxCoord x, wxCoord y) const;

View File

@ -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();