tty: ^C while prompted re-displays last message

- attempt to determine if tty_wait_synch() is called during the ending
 dialogs due to an interrupt, and not re-display the previous message
 at the wrong time
- also, "msg_window display anomaly" fix was missing code to still treat ^P
 properly while in a prompt
This commit is contained in:
cohrs
2002-02-04 05:57:35 +00:00
parent 1a197060b4
commit f255e2bedd
3 changed files with 9 additions and 2 deletions

View File

@@ -73,7 +73,10 @@ getlin_hook_proc hook;
}
if(c == '\020') { /* ctrl-P */
if (iflags.prevmsg_window) {
int sav = ttyDisplay->inread;
ttyDisplay->inread = 0;
(void) tty_doprev_message();
ttyDisplay->inread = sav;
tty_clear_nhwindow(WIN_MESSAGE);
cw->maxcol = cw->maxrow;
addtopl(query);

View File

@@ -300,12 +300,16 @@ char def;
q = lowc(readchar());
if (q == '\020') { /* ctrl-P */
if (iflags.prevmsg_window) {
int sav = ttyDisplay->inread;
ttyDisplay->inread = 0;
(void) tty_doprev_message();
ttyDisplay->inread = sav;
tty_clear_nhwindow(WIN_MESSAGE);
cw->maxcol = cw->maxrow;
addtopl(prompt);
} else {
if(!doprev) (void) tty_doprev_message(); /* need two initially */
if(!doprev)
(void) tty_doprev_message(); /* need two initially */
(void) tty_doprev_message();
doprev = 1;
}

View File

@@ -2218,7 +2218,7 @@ tty_wait_synch()
if(ttyDisplay->inmore) {
addtopl("--More--");
(void) fflush(stdout);
} else if(ttyDisplay->inread) {
} else if(ttyDisplay->inread > program_state.gameover) {
/* this can only happen if we were reading and got interrupted */
ttyDisplay->toplin = 3;
/* do this twice; 1st time gets the Quit? message again */