st-scrollback-float-0.9.2.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
st-scrollback-float-0.9.2.diff (1479B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 8b25d40..6769f99 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -201,8 +201,8 @@ static Shortcut shortcuts[] = {
6 { TERMMOD, XK_Y, selpaste, {.i = 0} },
7 { ShiftMask, XK_Insert, selpaste, {.i = 0} },
8 { TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
9 - { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
10 - { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
11 + { ShiftMask, XK_Page_Up, kscrollup, {.f = -0.1} },
12 + { ShiftMask, XK_Page_Down, kscrolldown, {.f = -0.1} },
13 };
14
15 /*
16 diff --git a/st.c b/st.c
17 index a3b3c9d..5a93594 100644
18 --- a/st.c
19 +++ b/st.c
20 @@ -1087,14 +1087,14 @@ tswapscreen(void)
21 void
22 kscrollup(const Arg *a)
23 {
24 - int n = a->i;
25 + float n = a->f;
26
27 if (IS_SET(MODE_ALTSCREEN))
28 return;
29
30 - if (n < 0) n = (-n) * term.row;
31 + if (n < 0) n = MAX((-n) * term.row, 1);
32 if (n > TSCREEN.size - term.row - TSCREEN.off) n = TSCREEN.size - term.row - TSCREEN.off;
33 - while (!TLINE(-n)) --n;
34 + while (!TLINE((int)-n)) --n;
35 TSCREEN.off += n;
36 selscroll(0, n);
37 tfulldirt();
38 @@ -1104,12 +1104,12 @@ void
39 kscrolldown(const Arg *a)
40 {
41
42 - int n = a->i;
43 + float n = a->f;
44
45 if (IS_SET(MODE_ALTSCREEN))
46 return;
47
48 - if (n < 0) n = (-n) * term.row;
49 + if (n < 0) n = MAX((-n) * term.row, 1);
50 if (n > TSCREEN.off) n = TSCREEN.off;
51 TSCREEN.off -= n;
52 selscroll(0, -n);