* tuiIO.c (tui_cont_sig): Update cursor position on the screen to

leave it in the command window.
	(tui_redisplay_readline): Save cursor position to restore the
	cursor after we go back from background.
	* tuiData.h (TuiCommandInfo): Add start_line member.
This commit is contained in:
Stephane Carrez 2001-07-23 21:16:20 +00:00
parent c6f60bcd2c
commit d75e970c9d
2 changed files with 17 additions and 6 deletions

View File

@ -252,6 +252,7 @@ typedef struct _TuiCommandInfo
{
int curLine; /* The current line position */
int curch; /* The current cursor position */
int start_line;
}
TuiCommandInfo, *TuiCommandInfoPtr;

View File

@ -117,6 +117,7 @@ tui_puts (const char *string)
}
getyx (w, cmdWin->detail.commandInfo.curLine,
cmdWin->detail.commandInfo.curch);
cmdWin->detail.commandInfo.start_line = cmdWin->detail.commandInfo.curLine;
/* We could defer the following. */
wrefresh (w);
@ -144,7 +145,7 @@ tui_redisplay_readline (void)
c_pos = -1;
c_line = -1;
w = cmdWin->generic.handle;
start_line = cmdWin->detail.commandInfo.curLine;
start_line = cmdWin->detail.commandInfo.start_line;
wmove (w, start_line, 0);
prev_col = 0;
height = 1;
@ -177,7 +178,7 @@ tui_redisplay_readline (void)
}
if (c == '\n')
{
getyx (w, cmdWin->detail.commandInfo.curLine,
getyx (w, cmdWin->detail.commandInfo.start_line,
cmdWin->detail.commandInfo.curch);
}
getyx (w, line, col);
@ -186,12 +187,15 @@ tui_redisplay_readline (void)
prev_col = col;
}
wclrtobot (w);
getyx (w, cmdWin->detail.commandInfo.curLine,
getyx (w, cmdWin->detail.commandInfo.start_line,
cmdWin->detail.commandInfo.curch);
if (c_line >= 0)
{
wmove (w, c_line, c_pos);
cmdWin->detail.commandInfo.curLine -= height - 1;
cmdWin->detail.commandInfo.curLine = c_line;
cmdWin->detail.commandInfo.curch = c_pos;
}
cmdWin->detail.commandInfo.start_line -= height - 1;
wrefresh (w);
fflush(stdout);
@ -307,6 +311,12 @@ tui_cont_sig (int sig)
/* Force a refresh of the screen. */
tuiRefreshAll ();
/* Update cursor position on the screen. */
wmove (cmdWin->generic.handle,
cmdWin->detail.commandInfo.start_line,
cmdWin->detail.commandInfo.curch);
wrefresh (cmdWin->generic.handle);
}
signal (sig, tui_cont_sig);
}