From 8a3a9a40cb071ca001f79e0192e0934e19628bd1 Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Sat, 28 Oct 2017 03:51:33 +0800 Subject: [PATCH] Fix behavior of scroll up (SU) This is a backport of https://github.com/KDE/konsole/commit/7ff23512fd6c6af1dba87083446f85baf75e9c71 --- lib/Screen.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/Screen.cpp b/lib/Screen.cpp index 6104764..676d2a7 100644 --- a/lib/Screen.cpp +++ b/lib/Screen.cpp @@ -751,13 +751,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),' '); }