statusbar: suppress the cursor when the terminal has just one row
When showing a message on the status bar, the cursor should be off. This fixes https://savannah.gnu.org/bugs/?60510. Bug existed since version 2.7.0, since nano allows very flat terminals.master
parent
36ffb5f0ac
commit
2cf28f9db7
11
src/winio.c
11
src/winio.c
|
@ -182,10 +182,14 @@ void read_keys_from(WINDOW *win)
|
||||||
bool timed = FALSE;
|
bool timed = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* On a one-row terminal, overwrite an unimportant message. */
|
||||||
|
if (LINES == 1 && currmenu == MMAIN && lastmessage == HUSH)
|
||||||
|
edit_refresh();
|
||||||
|
|
||||||
/* Before reading the first keycode, display any pending screen updates. */
|
/* Before reading the first keycode, display any pending screen updates. */
|
||||||
doupdate();
|
doupdate();
|
||||||
|
|
||||||
if (reveal_cursor && !hide_cursor)
|
if (reveal_cursor && !hide_cursor && (LINES > 1 || lastmessage <= HUSH))
|
||||||
curs_set(1);
|
curs_set(1);
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
|
@ -2245,6 +2249,11 @@ void statusline(message_type importance, const char *msg, ...)
|
||||||
if (importance < lastmessage && lastmessage > NOTICE)
|
if (importance < lastmessage && lastmessage > NOTICE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* On a one-row terminal, ensure that any changes in the edit window are
|
||||||
|
* written out first, to prevent them from overwriting the message. */
|
||||||
|
if (LINES == 1 && importance < INFO)
|
||||||
|
wnoutrefresh(edit);
|
||||||
|
|
||||||
/* Construct the message out of all the arguments. */
|
/* Construct the message out of all the arguments. */
|
||||||
compound = nmalloc(MAXCHARLEN * COLS + 1);
|
compound = nmalloc(MAXCHARLEN * COLS + 1);
|
||||||
va_start(ap, msg);
|
va_start(ap, msg);
|
||||||
|
|
Loading…
Reference in New Issue