From e02051e910c77690cb2aaaf12a9ebe4fddfa8309 Mon Sep 17 00:00:00 2001 From: Marcel Screm Date: Sun, 28 Dec 2025 12:24:41 +0100 Subject: added scrollback-float patch --- config.def.h | 4 ++-- config.h | 4 ++-- st | Bin 109768 -> 109768 bytes st.c | 10 +++++----- st.c.rej | 35 ----------------------------------- st.o | Bin 83152 -> 83776 bytes x.o | Bin 75728 -> 75728 bytes 7 files changed, 9 insertions(+), 44 deletions(-) delete mode 100644 st.c.rej diff --git a/config.def.h b/config.def.h index 8b25d40..6769f99 100644 --- a/config.def.h +++ b/config.def.h @@ -201,8 +201,8 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_Y, selpaste, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, - { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, + { ShiftMask, XK_Page_Up, kscrollup, {.f = -0.1} }, + { ShiftMask, XK_Page_Down, kscrolldown, {.f = -0.1} }, }; /* diff --git a/config.h b/config.h index 57698ae..f87140d 100644 --- a/config.h +++ b/config.h @@ -196,8 +196,8 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_Y, selpaste, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, - { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, + { ShiftMask, XK_Page_Up, kscrollup, {.f = -0.1} }, + { ShiftMask, XK_Page_Down, kscrolldown, {.f = -0.1} }, }; diff --git a/st b/st index 373789f..b082159 100755 Binary files a/st and b/st differ diff --git a/st.c b/st.c index af45169..b034844 100644 --- a/st.c +++ b/st.c @@ -1087,14 +1087,14 @@ tswapscreen(void) void kscrollup(const Arg *a) { - int n = a->i; + float n = a->f; if (IS_SET(MODE_ALTSCREEN)) return; - if (n < 0) n = (-n) * term.row; + if (n < 0) n = MAX((-n) * term.row, 1); if (n > TSCREEN.size - term.row - TSCREEN.off) n = TSCREEN.size - term.row - TSCREEN.off; - while (!TLINE(-n)) --n; + while (!TLINE((int)-n)) --n; TSCREEN.off += n; selscroll(0, n); tfulldirt(); @@ -1104,12 +1104,12 @@ void kscrolldown(const Arg *a) { - int n = a->i; + float n = a->f; if (IS_SET(MODE_ALTSCREEN)) return; - if (n < 0) n = (-n) * term.row; + if (n < 0) n = MAX((-n) * term.row, 1); if (n > TSCREEN.off) n = TSCREEN.off; TSCREEN.off -= n; selscroll(0, -n); diff --git a/st.c.rej b/st.c.rej deleted file mode 100644 index 72ef8d1..0000000 --- a/st.c.rej +++ /dev/null @@ -1,35 +0,0 @@ ---- st.c -+++ st.c -@@ -1087,14 +1087,14 @@ tswapscreen(void) - void - kscrollup(const Arg *a) - { -- int n = a->i; -+ float n = a->f; - - if (IS_SET(MODE_ALTSCREEN)) - return; - -- if (n < 0) n = (-n) * term.row; -+ if (n < 0) n = MAX((-n) * term.row, 1); - if (n > TSCREEN.size - term.row - TSCREEN.off) n = TSCREEN.size - term.row - TSCREEN.off; -- while (!TLINE(-n)) --n; -+ while (!TLINE((int)-n)) --n; - TSCREEN.off += n; - selscroll(0, n); - tfulldirt(); -@@ -1104,12 +1104,12 @@ void - kscrolldown(const Arg *a) - { - -- int n = a->i; -+ float n = a->f; - - if (IS_SET(MODE_ALTSCREEN)) - return; - -- if (n < 0) n = (-n) * term.row; -+ if (n < 0) n = MAX((-n) * term.row, 1); - if (n > TSCREEN.off) n = TSCREEN.off; - TSCREEN.off -= n; - selscroll(0, -n); diff --git a/st.o b/st.o index 2b7baf1..4ee0c38 100644 Binary files a/st.o and b/st.o differ diff --git a/x.o b/x.o index d978092..45d60ed 100644 Binary files a/x.o and b/x.o differ -- cgit v1.2.3