summaryrefslogtreecommitdiff
path: root/source/kde/patch/konsole/konsole.scrollup.diff
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/patch/konsole/konsole.scrollup.diff')
-rw-r--r--source/kde/patch/konsole/konsole.scrollup.diff43
1 files changed, 43 insertions, 0 deletions
diff --git a/source/kde/patch/konsole/konsole.scrollup.diff b/source/kde/patch/konsole/konsole.scrollup.diff
new file mode 100644
index 00000000..c80a61ec
--- /dev/null
+++ b/source/kde/patch/konsole/konsole.scrollup.diff
@@ -0,0 +1,43 @@
+From 7ff23512fd6c6af1dba87083446f85baf75e9c71 Mon Sep 17 00:00:00 2001
+From: Kurt Hindenburg <kurt.hindenburg@gmail.com>
+Date: Sat, 1 Jul 2017 19:12:39 -0400
+Subject: Correct scrollUp behavior
+
+CSI S escape sequence (SU, scroll up) ignored if number of lines to
+scroll bigger than scrollable lines
+
+REVIEW: 130133
+BUG: 379318
+---
+ src/Screen.cpp | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/Screen.cpp b/src/Screen.cpp
+index 94841a9..15bd685 100644
+--- a/src/Screen.cpp
++++ b/src/Screen.cpp
+@@ -746,13 +746,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), ' ');
+ }
+
+--
+cgit v0.11.2
+
+