added RefreshLines()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21039 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e135f09367
commit
ae0f022346
@ -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;
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user