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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user