diff options
author | Stephane Carrez <stcarrez@nerim.fr> | 2001-07-23 21:16:20 +0000 |
---|---|---|
committer | Stephane Carrez <stcarrez@nerim.fr> | 2001-07-23 21:16:20 +0000 |
commit | d75e970c9d3cfe3e20267cd336762a562f31f623 (patch) | |
tree | b90d7fe2ab6f6439f0246ef70657945aafc91d77 /gdb/tui | |
parent | c6f60bcd2c458714bd21da267719d55ba7e10736 (diff) | |
download | gdb-d75e970c9d3cfe3e20267cd336762a562f31f623.zip gdb-d75e970c9d3cfe3e20267cd336762a562f31f623.tar.gz gdb-d75e970c9d3cfe3e20267cd336762a562f31f623.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/tui')
-rw-r--r-- | gdb/tui/tuiData.h | 1 | ||||
-rw-r--r-- | gdb/tui/tuiIO.c | 22 |
2 files changed, 17 insertions, 6 deletions
diff --git a/gdb/tui/tuiData.h b/gdb/tui/tuiData.h index 6fc4ca3..9edf000 100644 --- a/gdb/tui/tuiData.h +++ b/gdb/tui/tuiData.h @@ -252,6 +252,7 @@ typedef struct _TuiCommandInfo { int curLine; /* The current line position */ int curch; /* The current cursor position */ + int start_line; } TuiCommandInfo, *TuiCommandInfoPtr; diff --git a/gdb/tui/tuiIO.c b/gdb/tui/tuiIO.c index a089929..ad8a53a 100644 --- a/gdb/tui/tuiIO.c +++ b/gdb/tui/tuiIO.c @@ -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,13 +187,16 @@ 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); + { + wmove (w, c_line, c_pos); + cmdWin->detail.commandInfo.curLine = c_line; + cmdWin->detail.commandInfo.curch = c_pos; + } + cmdWin->detail.commandInfo.start_line -= height - 1; - cmdWin->detail.commandInfo.curLine -= 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); } |