diff options
author | Jakob Kaivo <jkk@ung.org> | 2022-04-18 19:30:42 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2022-04-18 19:30:42 -0400 |
commit | 9d1acdec46cffad622984cb4fc69932c4ea0cb07 (patch) | |
tree | 02997e37769283b1b3dde0598c1322e923551bf8 | |
parent | 484d07c159795b3e885709d66cce71d63c183797 (diff) |
get closer to fixing scrolling
-rw-r--r-- | more.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -21,7 +21,7 @@ enum { CTRL_U = 0x15, }; -void man_refresh(struct more_file *mf) +static void man_refresh(struct more_file *mf) { for (size_t i = mf->topline; i < mf->topline + LINES - 1; i++) { /* FIXME: account for long lines */ @@ -34,12 +34,12 @@ void man_refresh(struct more_file *mf) } } -void man_scroll(struct more_file *mf, int count, int multiple) +static void man_scroll(struct more_file *mf, int count, int multiple) { int by = count ? count * multiple : multiple; - scrl(by); if (by < 0) { + scrl(by); if ((size_t)(-by) > mf->topline) { mf->topline = 0; } else { @@ -59,7 +59,7 @@ void man_scroll(struct more_file *mf, int count, int multiple) refresh(); } -void mark(struct more_file *mf) +static void mark(struct more_file *mf) { int c = getch(); if (islower(c)) { @@ -67,7 +67,7 @@ void mark(struct more_file *mf) } } -void jump(struct more_file *mf) +static void jump(struct more_file *mf) { int c = getch(); if (islower(c)) { @@ -104,7 +104,7 @@ static int more(const char *path) case 'f': case CTRL_F: if (count == 0) { - count = LINES; + count = LINES - 1; } man_scroll(&mf, count, 1); break; @@ -112,13 +112,13 @@ static int more(const char *path) case 'b': case CTRL_B: if (count == 0) { - count = LINES; + count = LINES - 1; } man_scroll(&mf, count, -1); break; case ' ': - count = count ? count : LINES; + count = count ? count : LINES - 1; /* FALLTHRU */ case 'j': case '\n': @@ -131,17 +131,17 @@ static int more(const char *path) case 'd': case CTRL_D: - man_scroll(&mf, count, LINES / 2); + man_scroll(&mf, count, (LINES - 1) / 2); break; case 's': count = count ? count : 1; - man_scroll(&mf, LINES + count, 1); + man_scroll(&mf, LINES - 1 + count, 1); break; case 'u': case CTRL_U: - man_scroll(&mf, count, -LINES / 2); + man_scroll(&mf, count, -(LINES - 1) / 2); break; case 'G': |