Introduction
Introduction Statistics Contact Development Disclaimer Help
Magnetic redraw behaviour - scroll - scrollbackbuffer program for st
git clone git://git.suckless.org/scroll
Log
Files
Refs
README
LICENSE
---
commit 8afdc10fd50174fc2f567d371401834277bf1c40
parent d65e29260f83ac1d9d5fe128540f0079638b4e1a
Author: Jochen Sprickerhof <[email protected]>
Date: Sat, 25 Apr 2020 22:33:46 +0200
Magnetic redraw behaviour
Diffstat:
M scroll.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
---
diff --git a/scroll.c b/scroll.c
@@ -254,16 +254,19 @@ redraw()
{
int rows = 0, x, y;
+ if (bottom == NULL)
+ return;
+
getcursorposition(&x, &y);
+ if (y < ws.ws_row-1)
+ y--;
+
/* wind back bottom pointer by shown history */
for (; bottom != NULL && TAILQ_NEXT(bottom, entries) != NULL &&
- rows < y - 2; rows++)
+ rows < y - 1; rows++)
bottom = TAILQ_NEXT(bottom, entries);
- if (rows == 0)
- return;
-
/* clear screen */
dprintf(STDOUT_FILENO, "\033[2J");
/* set cursor position to upper left corner */
@@ -275,12 +278,16 @@ redraw()
else
write(STDOUT_FILENO, bottom->buf, bottom->size);
- for (; rows > 0; rows--) {
+ for (rows = ws.ws_row; rows > 0 &&
+ TAILQ_PREV(bottom, tailhead, entries) != NULL; rows--) {
bottom = TAILQ_PREV(bottom, tailhead, entries);
write(STDOUT_FILENO, bottom->buf, bottom->size);
}
- /* add new line in front of the shell prompt */
- write(STDOUT_FILENO, "\n", 1);
+
+ if (bottom == TAILQ_FIRST(&head))
+ write(STDOUT_FILENO, "\n", 1);
+ else
+ bottom = TAILQ_NEXT(bottom, entries);
}
void
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.