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:
@@ -146,8 +146,8 @@ protected:
|
|||||||
void OnScroll(wxScrollWinEvent& event);
|
void OnScroll(wxScrollWinEvent& event);
|
||||||
|
|
||||||
// find the index of the line we need to show at the top of the window such
|
// 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
|
// that the last (fully or partially) visible line is the given one
|
||||||
size_t FindFirstFromBottom(size_t lineLast);
|
size_t FindFirstFromBottom(size_t lineLast, bool fullyVisible = false);
|
||||||
|
|
||||||
// get the total height of the lines between lineMin (inclusive) and
|
// get the total height of the lines between lineMin (inclusive) and
|
||||||
// lineMax (exclusive)
|
// lineMax (exclusive)
|
||||||
|
@@ -74,7 +74,7 @@ wxCoord wxVScrolledWindow::GetLinesHeight(size_t lineMin, size_t lineMax) const
|
|||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast)
|
size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast, bool full)
|
||||||
{
|
{
|
||||||
const wxCoord hWindow = GetClientSize().y;
|
const wxCoord hWindow = GetClientSize().y;
|
||||||
|
|
||||||
@@ -88,7 +88,13 @@ size_t wxVScrolledWindow::FindFirstFromBottom(size_t lineLast)
|
|||||||
|
|
||||||
if ( h > hWindow )
|
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;
|
break;
|
||||||
}
|
}
|
||||||
@@ -230,7 +236,7 @@ bool wxVScrolledWindow::ScrollToLine(size_t line)
|
|||||||
|
|
||||||
// determine the real first line to scroll to: we shouldn't scroll beyond
|
// determine the real first line to scroll to: we shouldn't scroll beyond
|
||||||
// the end
|
// the end
|
||||||
size_t lineFirstLast = FindFirstFromBottom(m_lineMax - 1);
|
size_t lineFirstLast = FindFirstFromBottom(m_lineMax - 1, true);
|
||||||
if ( line > lineFirstLast )
|
if ( line > lineFirstLast )
|
||||||
line = lineFirstLast;
|
line = lineFirstLast;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user