pressing PageDown and then PageUp should return to the same item

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-06-03 11:15:38 +00:00
parent e7546115db
commit 0b49ccf8d6
2 changed files with 11 additions and 5 deletions

View File

@@ -146,8 +146,8 @@ protected:
void OnScroll(wxScrollWinEvent& event);
// find the index of the line we need to show at the top of the window such
// that the last line shown is the given one
size_t FindFirstFromBottom(size_t lineLast);
// that the last (fully or partially) visible line is the given one
size_t FindFirstFromBottom(size_t lineLast, bool fullyVisible = false);
// get the total height of the lines between lineMin (inclusive) and
// lineMax (exclusive)

View File

@@ -74,7 +74,7 @@ wxCoord wxVScrolledWindow::GetLinesHeight(size_t lineMin, size_t lineMax) const
return height;
}
size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast)
size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast, bool full)
{
const wxCoord hWindow = GetClientSize().y;
@@ -88,7 +88,13 @@ size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast)
if ( h > hWindow )
{
lineFirst++;
// for this line to be fully visible we need to go one line
// down, but if it is enough for it to be only partly visible then
// this line will do as well
if ( full )
{
lineFirst++;
}
break;
}
@@ -230,7 +236,7 @@ bool wxVScrolledWindow::ScrollToLine(size_t line)
// determine the real first line to scroll to: we shouldn't scroll beyond
// the end
size_t lineFirstLast = FindFirstFromBottom(m_lineMax - 1);
size_t lineFirstLast = FindFirstFromBottom(m_lineMax - 1, true);
if ( line > lineFirstLast )
line = lineFirstLast;