From 10f748a2dfa64e1fe099f86277823ee54597459e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 14 Sep 2014 21:24:39 -0400 Subject: allow specifying a size to resize to this used to just calculate it manually from the size of the x window, but we don't have that now --- src/screen.c | 18 +++++++++--------- src/screen.h | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/screen.c b/src/screen.c index 06292fd..15ca051 100644 --- a/src/screen.c +++ b/src/screen.c @@ -16,12 +16,13 @@ static int vt100_screen_loc_is_between( struct vt100_loc start, struct vt100_loc end); static int vt100_screen_row_max_col(VT100Screen *vt, int row); -VT100Screen *vt100_screen_new() +VT100Screen *vt100_screen_new(int rows, int cols) { VT100Screen *vt; vt = calloc(1, sizeof(VT100Screen)); vt100_screen_init(vt); + vt100_screen_set_window_size(vt, rows, cols); return vt; } @@ -32,7 +33,7 @@ void vt100_screen_init(VT100Screen *vt) vt100_parser_yylex_init_extra(vt, &vt->scanner); } -void vt100_screen_set_window_size(VT100Screen *vt) +void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols) { struct vt100_loc old_size; int i; @@ -40,11 +41,8 @@ void vt100_screen_set_window_size(VT100Screen *vt) old_size.row = vt->grid->max.row; old_size.col = vt->grid->max.col; - /* vt->grid->max.row = vt->display.ypixel / vt->display.fonty; */ - /* vt->grid->max.col = vt->display.xpixel / vt->display.fontx; */ - // XXX vt100 - vt->grid->max.row = 24; - vt->grid->max.col = 80; + vt->grid->max.row = rows; + vt->grid->max.col = cols; if (vt->grid->max.row == 0) { vt->grid->max.row = 1; @@ -656,7 +654,9 @@ void vt100_screen_use_alternate_buffer(VT100Screen *vt) vt->alternate = vt->grid; vt->grid = calloc(1, sizeof(struct vt100_grid)); - vt100_screen_set_window_size(vt); + vt100_screen_set_window_size( + vt, vt->alternate->max.row, vt->alternate->max.col + ); vt->dirty = 1; } @@ -678,7 +678,7 @@ void vt100_screen_use_normal_buffer(VT100Screen *vt) vt->grid = vt->alternate; vt->alternate = NULL; - vt100_screen_set_window_size(vt); + vt100_screen_set_window_size(vt, vt->grid->max.row, vt->grid->max.col); vt->dirty = 1; } diff --git a/src/screen.h b/src/screen.h index 2fdc60f..37a9ab7 100644 --- a/src/screen.h +++ b/src/screen.h @@ -111,9 +111,9 @@ struct vt100_screen { unsigned char dirty: 1; }; -VT100Screen *vt100_screen_new(); +VT100Screen *vt100_screen_new(int rows, int cols); void vt100_screen_init(VT100Screen *vt); -void vt100_screen_set_window_size(VT100Screen *vt); +void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols); 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