diff options
author | Kristian Høgsberg <krh@redhat.com> | 2008-12-08 00:16:39 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2008-12-08 00:16:39 -0500 |
commit | b29415ee6d23c83f35b3a0557032996382a8016c (patch) | |
tree | 572b4fb791c65d6e41407f96ac16d8cd4b2141ab /terminal.c | |
parent | f04e838d4afd1edde10552e4ade91780b0d52123 (diff) |
Update tail pointer correctly so scrolling works.
Diffstat (limited to 'terminal.c')
-rw-r--r-- | terminal.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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); |