]> granicus.if.org Git - nethack/commit
fix #H8753 - curses message window anomalies
authorPatR <rankin@nethack.org>
Sat, 18 May 2019 09:25:48 +0000 (02:25 -0700)
committerPatR <rankin@nethack.org>
Sat, 18 May 2019 09:25:48 +0000 (02:25 -0700)
commitf218e3f15e2d5525e817fb07e6a8b4773f296073
tree0e0277cea78e30d5738bd39557d62fc12139169f
parent345c1b719f84df46b13ddad3af091ed618b5f7c9
fix #H8753 - curses message window anomalies

Autodescribe feedback and multi-digit count prompts are always shown
on the last line of the message window and are suppressed from message
history (both ^P and DUMPLOG).  When the message window is using all
available lines, the last one was being overwritten (until the count
or the feedback was completed or dismissed, then last line returned).
Adopt the suggestion that it be scrolled up a line instead of being
overwritten.  [I haven't been able to reproduce the reported problem
where shorter overlaid text left some of longer underlying text visible
but that should now become moot.]

Bonus fix:  while testing, I noticed that if your screen only has room
for a one-line message window and you used ESC to cancel 'pick a spot
with cursor' prompting before moving the cursor, the prompt was left
intact on the message line.  tty erases it in that situation, but the
clear_nhwindow(WIN_MESSAGE) was a no-op for curses because it usually
doesn't erase old messages.  This changes the curses behavior when the
core asks it to erase the message window:  now it forces one blank line
of fake autodesribe feedback (causing the prompt or other most recent
message to scroll off top), then removes that fake feedback (leaving
a blank message line).  For multi-line message window, the old messages
scroll up by one line sooner than they would when waiting for the next
real message but are otherwise unaffected.
doc/fixes36.3
win/curses/cursinit.c
win/curses/cursmain.c
win/curses/cursmesg.c
win/curses/curswins.c