From b29415ee6d23c83f35b3a0557032996382a8016c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 8 Dec 2008 00:16:39 -0500 Subject: [PATCH] Update tail pointer correctly so scrolling works. --- terminal.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/terminal.c b/terminal.c index dc43d6a..6bc6a51 100644 --- a/terminal.c +++ b/terminal.c @@ -55,7 +55,7 @@ struct terminal { struct wl_display *display; int resize_scheduled; char *data; - int width, height, tail, row, column; + int width, height, tail, row, column, total_rows; int fd, master; struct buffer *buffer; GIOChannel *channel; @@ -149,9 +149,17 @@ terminal_data(struct terminal *terminal, const char *data, size_t length) break; case '\n': terminal->row++; + terminal->total_rows++; terminal->column = 0; if (terminal->row == terminal->height) terminal->row = 0; + if (terminal->row == terminal->tail && terminal->total_rows > 0) { + memset(&terminal->data[terminal->row * (terminal->width + 1)], + 0, terminal->width); + terminal->tail++; + } + if (terminal->tail == terminal->height) + terminal->tail = 0; break; case '\t': memset(&row[terminal->column], ' ', -terminal->column & 7); -- 2.7.4