$NetBSD: patch-ak,v 1.1 2009/10/22 22:01:26 wiz Exp $ --- src/signal.c.orig 2008-12-30 20:26:25.000000000 +0100 +++ src/signal.c @@ -104,6 +104,8 @@ int need_resize = cNo; */ int NOTESLINES; +static t_bool redraw_after_suspend; + #ifndef __LCLINT__ /* lclint doesn't like it */ static const struct { @@ -268,7 +270,7 @@ handle_resize( switch (signal_context) { case cArt: ClearScreen(); - show_art_msg(curr_group->name); + show_art_msg(CURR_GROUP.name); break; case cConfig: @@ -303,14 +305,24 @@ handle_resize( gl_redraw(); break; + case cPromptCONT: + if (redraw_after_suspend) + info_message(_(txt_return_key)); + break; + case cPromptSLK: prompt_slk_redraw(); break; + case cPromptYN: + prompt_yn_redraw(); + break; + default: break; } my_fflush(stdout); + redraw_after_suspend = FALSE; #endif /* SIGWINCH || SIGTSTP */ } @@ -320,22 +332,34 @@ static void handle_suspend( void) { + t_bool save_cmd_line = cmd_line; + t_bool save_state = (!batch_mode || !cmd_line); + TRACE(("handle_suspend(%d)", signal_context)); set_keypad_off(); if (!cmd_line) set_xclick_off(); - Raw(FALSE); + if (save_state) { + EndWin(); + Raw(FALSE); + } + wait_message(0, _(txt_suspended_message), tin_progname); kill(0, SIGSTOP); /* Put ourselves to sleep */ RESTORE_HANDLER(SIGTSTP, signal_handler); - if (!batch_mode) { + if (save_state) { Raw(TRUE); + InitWin(); + cmd_line = save_cmd_line; + if (!cmd_line) + my_retouch(); need_resize = cRedraw; /* Flag a redraw */ + redraw_after_suspend = TRUE; } set_keypad_on(); if (!cmd_line)