Update tail pointer correctly so scrolling works.

This commit is contained in:
Kristian Høgsberg 2008-12-08 00:16:39 -05:00
parent f04e838d4a
commit b29415ee6d
1 changed files with 9 additions and 1 deletions

View File

@ -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);