From be88a8a25b02b8a4c267faa5523189406aecaf78 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 14 Sep 2014 21:55:12 -0400 Subject: stop hardcoding the default scrollback length --- src/screen.c | 11 +++++++++-- src/screen.h | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/screen.c b/src/screen.c index 15ca051..d543b13 100644 --- a/src/screen.c +++ b/src/screen.c @@ -43,6 +43,8 @@ void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols) vt->grid->max.row = rows; vt->grid->max.col = cols; + if (!vt->custom_scrollback_length) + vt->scrollback_length = rows; if (vt->grid->max.row == 0) { vt->grid->max.row = 1; @@ -92,6 +94,12 @@ void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols) vt->grid->scroll_bottom = vt->grid->max.row - 1; } +void vt100_screen_set_scrollback_length(VT100Screen *vt, int rows) +{ + vt->scrollback_length = rows; + vt->custom_scrollback_length = 1; +} + int vt100_screen_process_string(VT100Screen *vt, char *buf, size_t len) { int remaining; @@ -856,8 +864,7 @@ static void vt100_screen_scroll_down(VT100Screen *vt, int count) } } else { - /* int scrollback = vt->config.scrollback_length; */ - int scrollback = 4096; // XXX vt100 + int scrollback = vt->scrollback_length; if (vt->grid->row_count + count > scrollback) { int overflow = vt->grid->row_count + count - scrollback; diff --git a/src/screen.h b/src/screen.h index 37a9ab7..b6d1ab5 100644 --- a/src/screen.h +++ b/src/screen.h @@ -92,6 +92,8 @@ struct vt100_screen { struct vt100_cell_attrs attrs; + int scrollback_length; + yyscan_t scanner; YY_BUFFER_STATE state; @@ -109,11 +111,13 @@ struct vt100_screen { unsigned char has_selection: 1; unsigned char dirty: 1; + unsigned char custom_scrollback_length: 1; }; VT100Screen *vt100_screen_new(int rows, int cols); void vt100_screen_init(VT100Screen *vt); void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols); +void vt100_screen_set_scrollback_length(VT100Screen *vt, int rows); int vt100_screen_process_string(VT100Screen *vt, char *buf, size_t len); int vt100_screen_loc_is_selected(VT100Screen *vt, struct vt100_loc loc); void vt100_screen_get_string( -- cgit v1.2.3-54-g00ecf