From 64eb0d5deb6e1ee188efbfbec4eac6b244a0e22c Mon Sep 17 00:00:00 2001 From: Renaud Fivet Date: Tue, 31 Aug 2021 12:55:10 +0800 Subject: [PATCH] Use explicit constants for smallest size of display rows and columns. --- display.c | 16 ++++++++++------ display.h | 3 +++ window.c | 27 +++++++++++++-------------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/display.c b/display.c index ea43125..4422f45 100644 --- a/display.c +++ b/display.c @@ -136,9 +136,13 @@ static void vtalloc( int maxrow, int maxcol) { } void updmargin( void) { +#define MINMARGIN 3 /* MINMARGIN - 1 enough for $ + prev before current */ +#if MINCOLS < 2 * MINMARGIN + 1 +# error "MINCOLS and MINMARGIN are not consistent" +#endif term.t_margin = term.t_ncol / 10 ; - if( term.t_margin < 3) /* t_margin - 1 enough for $ + prev before current */ - term.t_margin = 3 ; + if( term.t_margin < MINMARGIN) + term.t_margin = MINMARGIN ; term.t_scrsiz = term.t_ncol - 2 * term.t_margin ; } @@ -1327,11 +1331,11 @@ static void sizesignal( int signr) { static void newscreensize( int h, int w) { chg_width = chg_height = 0 ; vtfree() ; - if( h < 3) - h = 3 ; + if( h < MINROWS) + h = MINROWS ; - if( w < 10) - w = 10 ; + if( w < MINCOLS) + w = MINCOLS ; vtalloc( h, w) ; if( h <= term.t_mrow) diff --git a/display.h b/display.h index a65fb9b..3d10af8 100644 --- a/display.h +++ b/display.h @@ -8,6 +8,9 @@ #include "names.h" /* BINDABLE() */ #include "utf8.h" /* unicode_t */ +#define MINROWS 3 +#define MINCOLS 10 + extern int mpresf ; /* Stuff in message line */ extern int scrollcount ; /* number of lines to scroll */ extern int discmd ; /* display command flag */ diff --git a/window.c b/window.c index 959f846..b3e87d9 100644 --- a/window.c +++ b/window.c @@ -561,6 +561,11 @@ BINDABLE( restwnd) { } +static void adjust( window_p wp, int screenrows) { + wp->w_ntrows = screenrows - wp->w_toprow - 2 ; + wp->w_flag |= WFHARD | WFMODE ; +} + /* resize the screen, re-writing the screen * * int f; default flag @@ -574,7 +579,7 @@ BBINDABLE( newsize) { n = term.t_mrow ; /* make sure it's in range */ - if( n < 3 || n > term.t_mrow) + if( n < MINROWS || n > term.t_mrow) return mloutfail( "%%Screen size out of range") ; if( term.t_nrow == n - 1) @@ -587,8 +592,7 @@ BBINDABLE( newsize) { ; /* and enlarge it as needed */ - wp->w_ntrows = n - wp->w_toprow - 2 ; - wp->w_flag |= WFHARD | WFMODE ; + adjust( wp, n) ; } else { /* new size is smaller */ /* rebuild the window structure */ @@ -598,10 +602,9 @@ BBINDABLE( newsize) { wp = nextwp ; nextwp = wp->w_wndp ; - if( wp->w_toprow == n - 2) { - lastwp->w_ntrows = n - lastwp->w_toprow - 2 ; - lastwp->w_flag |= WFHARD | WFMODE ; - } + /* expand previous window if current would have zero lines */ + if( wp->w_toprow == n - 2) + adjust( lastwp, n) ; /* get rid of it if it is too low */ if( wp->w_toprow >= n - 2) { @@ -624,12 +627,8 @@ BBINDABLE( newsize) { lastwp->w_wndp = NULL ; } else { /* need to change this window size? */ - int lastline = wp->w_toprow + wp->w_ntrows - 1 ; - if( lastline >= n - 2) { - wp->w_ntrows = n - wp->w_toprow - 2 ; - assert( wp->w_ntrows) ; - wp->w_flag |= WFHARD | WFMODE ; - } + if( (wp->w_toprow + wp->w_ntrows - 1) >= n - 2) + adjust( wp, n) ; lastwp = wp ; } @@ -654,7 +653,7 @@ BBINDABLE( newwidth) { n = term.t_mcol ; /* make sure it's in range */ - if( n < 10 || n > term.t_mcol) + if( n < MINCOLS || n > term.t_mcol) return mloutfail( "%%Screen width out of range") ; /* otherwise, just re-width it (no big deal) */