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(c == '\020') { /* ctrl-P */
|
||||||
if (iflags.prevmsg_window) {
|
if (iflags.prevmsg_window) {
|
||||||
|
int sav = ttyDisplay->inread;
|
||||||
|
ttyDisplay->inread = 0;
|
||||||
(void) tty_doprev_message();
|
(void) tty_doprev_message();
|
||||||
|
ttyDisplay->inread = sav;
|
||||||
tty_clear_nhwindow(WIN_MESSAGE);
|
tty_clear_nhwindow(WIN_MESSAGE);
|
||||||
cw->maxcol = cw->maxrow;
|
cw->maxcol = cw->maxrow;
|
||||||
addtopl(query);
|
addtopl(query);
|
||||||
|
|||||||
+5
-1
@@ -300,12 +300,16 @@ char def;
|
|||||||
q = lowc(readchar());
|
q = lowc(readchar());
|
||||||
if (q == '\020') { /* ctrl-P */
|
if (q == '\020') { /* ctrl-P */
|
||||||
if (iflags.prevmsg_window) {
|
if (iflags.prevmsg_window) {
|
||||||
|
int sav = ttyDisplay->inread;
|
||||||
|
ttyDisplay->inread = 0;
|
||||||
(void) tty_doprev_message();
|
(void) tty_doprev_message();
|
||||||
|
ttyDisplay->inread = sav;
|
||||||
tty_clear_nhwindow(WIN_MESSAGE);
|
tty_clear_nhwindow(WIN_MESSAGE);
|
||||||
cw->maxcol = cw->maxrow;
|
cw->maxcol = cw->maxrow;
|
||||||
addtopl(prompt);
|
addtopl(prompt);
|
||||||
} else {
|
} else {
|
||||||
if(!doprev) (void) tty_doprev_message(); /* need two initially */
|
if(!doprev)
|
||||||
|
(void) tty_doprev_message(); /* need two initially */
|
||||||
(void) tty_doprev_message();
|
(void) tty_doprev_message();
|
||||||
doprev = 1;
|
doprev = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -2218,7 +2218,7 @@ tty_wait_synch()
|
|||||||
if(ttyDisplay->inmore) {
|
if(ttyDisplay->inmore) {
|
||||||
addtopl("--More--");
|
addtopl("--More--");
|
||||||
(void) fflush(stdout);
|
(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 */
|
/* this can only happen if we were reading and got interrupted */
|
||||||
ttyDisplay->toplin = 3;
|
ttyDisplay->toplin = 3;
|
||||||
/* do this twice; 1st time gets the Quit? message again */
|
/* do this twice; 1st time gets the Quit? message again */
|
||||||
|
|||||||
Reference in New Issue
Block a user