From 0dd2a5528499efbcc07f1666eac2bd2e7822b077 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@justemail.net> Date: Mon, 15 Aug 2016 12:55:03 +0200 Subject: [PATCH] screen: don't die when the window is narrower than four columns This fixes https://savannah.gnu.org/bugs/?48520. --- src/nano.c | 6 ++++-- src/nano.h | 5 ----- src/winio.c | 9 +++++---- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/nano.c b/src/nano.c index 55c01216..8458a475 100644 --- a/src/nano.c +++ b/src/nano.c @@ -692,9 +692,11 @@ void die_save_file(const char *die_filename, struct stat *die_stat) /* Initialize the three window portions nano uses. */ void window_init(void) { - /* If the screen height is too small, get out. */ + /* Compute how many lines the edit subwindow will have. */ editwinrows = LINES - TOP_ROWS - BOTTOM_ROWS; - if (COLS < MIN_EDITOR_COLS || editwinrows < MIN_EDITOR_ROWS) + + /* If there is no room to show anything, give up. */ + if (editwinrows <= 0) die(_("Window size is too small for nano...\n")); #ifndef DISABLE_WRAPJUSTIFY diff --git a/src/nano.h b/src/nano.h index 08996499..2c7dee47 100644 --- a/src/nano.h +++ b/src/nano.h @@ -576,11 +576,6 @@ enum /* The maximum number of entries displayed in the main shortcut list. */ #define MAIN_VISIBLE (((COLS + 40) / 20) * 2) -/* The minimum editor window columns and rows required for nano to work - * correctly. Don't make these smaller than 4 and 1. */ -#define MIN_EDITOR_COLS 4 -#define MIN_EDITOR_ROWS 1 - /* The default number of characters from the end of the line where * wrapping occurs. */ #define CHARS_FROM_EOL 8 diff --git a/src/winio.c b/src/winio.c index 1f31195a..faf69b34 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2048,12 +2048,13 @@ void bottombars(int menu) slen = MAIN_VISIBLE; } - /* There will be this many characters per column, except for the - * last two, which will be longer by (COLS % colwidth) columns so as - * to not waste space. We need at least three columns to display - * anything properly. */ + /* Compute the width of each keyname-plus-explanation pair. */ colwidth = COLS / ((slen / 2) + (slen % 2)); + /* If there is no room, don't print anything. */ + if (colwidth == 0) + return; + blank_bottombars(); #ifdef DEBUG -- GitLab