Correct scrollUp behavior

CSI S escape sequence (SU, scroll up) ignored if number of lines to
scroll bigger than scrollable lines

REVIEW: https://git.reviewboard.kde.org/r/130133
BUG: https://bugs.kde.org/379318

(cherry-picked from commit 7ff23512fd6c6af1dba87083446f85baf75e9c71)
This commit is contained in:
Kurt Hindenburg
2017-07-01 19:12:39 -04:00
committed by Jeremy Stanley
parent 051e019307
commit f3dab2391b
+7 -2
View File
@@ -728,13 +728,18 @@ QRect Screen::lastScrolledRegion() const
void Screen::scrollUp(int from, int n)
{
if (n <= 0 || from + n > _bottomMargin) return;
if (n <= 0)
return;
if (from > _bottomMargin)
return;
if (from + n > _bottomMargin)
n = _bottomMargin + 1 - from;
_scrolledLines -= n;
_lastScrolledRegion = QRect(0,_topMargin,columns-1,(_bottomMargin-_topMargin));
//FIXME: make sure `topMargin', `bottomMargin', `from', `n' is in bounds.
moveImage(loc(0,from),loc(0,from+n),loc(columns-1,_bottomMargin));
moveImage(loc(0,from),loc(0,from+n),loc(columns,_bottomMargin));
clearImage(loc(0,_bottomMargin-n+1),loc(columns-1,_bottomMargin),' ');
}