take two: tty bug with long 'autodescribe' text

Messages on tty which bypass message history weren't handling long
lines properly.  If the text wrapped to line 2, that continuation
portion was left on the screen after whatever operation that put it
here was finished.  (To reproduce:  assign a long name to a monster
with a long type name so that the combined length exceeds the display
width, then move the cursor over it with ';' or '/' while autodescribe
is On.)

This time prompting isn't adversely affected.
This commit is contained in:
PatR
2019-06-15 07:18:47 -07:00
parent 9cbc8ace42
commit 747981d0c5
2 changed files with 9 additions and 5 deletions

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.54 $ $NHDT-Date: 1560600663 2019/06/15 12:11:03 $
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.55 $ $NHDT-Date: 1560608320 2019/06/15 14:18:40 $
This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -132,6 +132,9 @@ tty: re-do one optimization used when status conditions have all been removed
and remove another that tried to check whether condition text to be
displayed next was the same as the existing value; sometimes new
status condition wouldn't be shown unless a screen redraw was forced
tty: take two, if/when autodecribe feedback wraps past top line, clear
continuation lines and redraw map if needed when top line is cleared
['exposed by git' section has an entry for reversal of 'take one']
Windows: some startup error messages were not being delivered successfully

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 topl.c $NHDT-Date: 1560600658 2019/06/15 12:10:58 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.46 $ */
/* NetHack 3.6 topl.c $NHDT-Date: 1560608320 2019/06/15 14:18:40 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.47 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Michael Allison, 2009. */
/* NetHack may be freely redistributed. See license for details. */
@@ -151,15 +151,16 @@ const char *str;
struct WinDesc *cw = wins[WIN_MESSAGE];
if (!(cw->flags & WIN_STOP)) {
if (ttyDisplay->cury && ttyDisplay->toplin == 2)
tty_clear_nhwindow(WIN_MESSAGE);
cw->curx = cw->cury = 0;
home();
cl_end();
addtopl(str);
#if 0 /* this doesn't work as intended; it disrupts multi-line prompts */
if (ttyDisplay->cury && ttyDisplay->toplin != 3)
more();
#endif
ttyDisplay->toplin = 2;
}
}