summaryrefslogtreecommitdiff
path: root/archive/st/patch/scrollback.c
diff options
context:
space:
mode:
Diffstat (limited to 'archive/st/patch/scrollback.c')
-rw-r--r--archive/st/patch/scrollback.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/archive/st/patch/scrollback.c b/archive/st/patch/scrollback.c
new file mode 100644
index 0000000..2644cfe
--- /dev/null
+++ b/archive/st/patch/scrollback.c
@@ -0,0 +1,55 @@
+void
+kscrolldown(const Arg* a)
+{
+ int n = a->i;
+
+ if (n < 0)
+ n = term.row + n;
+
+ if (n > term.scr)
+ n = term.scr;
+
+ if (term.scr > 0) {
+ term.scr -= n;
+ selscroll(0, -n);
+ tfulldirt();
+ }
+
+ #if SIXEL_PATCH
+ scroll_images(-1*n);
+ #endif // SIXEL_PATCH
+
+ #if OPENURLONCLICK_PATCH
+ if (n > 0)
+ restoremousecursor();
+ #endif // OPENURLONCLICK_PATCH
+}
+
+void
+kscrollup(const Arg* a)
+{
+ int n = a->i;
+ if (n < 0)
+ n = term.row + n;
+
+ if (term.scr + n > term.histn)
+ n = term.histn - term.scr;
+
+ if (!n)
+ return;
+
+ if (term.scr <= HISTSIZE-n) {
+ term.scr += n;
+ selscroll(0, n);
+ tfulldirt();
+ }
+
+ #if SIXEL_PATCH
+ scroll_images(n);
+ #endif // SIXEL_PATCH
+
+ #if OPENURLONCLICK_PATCH
+ if (n > 0)
+ restoremousecursor();
+ #endif // OPENURLONCLICK_PATCH
+}