1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
$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)
|