From 3c886efe0fd5c2e25cc482bbbfd37503d9be15c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Sat, 17 Feb 2024 14:26:39 -0500 Subject: [PATCH] Store scrollback position before clearing screen at end. This allows ALT-B from dialing directory to show the last seen thing, not the extra blank screen added to the end. Doesn't fix anything, but a huge QoL improvement for people who use ALT-B after disconnecting. --- src/syncterm/bbslist.c | 2 +- src/syncterm/syncterm.c | 1 + src/syncterm/syncterm.h | 1 + src/syncterm/term.c | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index 810694265f..d13dc4b8fe 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -384,7 +384,7 @@ viewofflinescroll(void) setfont(0, false, 4); drawwin(); set_modepalette(palettes[COLOUR_PALETTE]); - top = scrollback_lines; + top = scrollback_pos; gotoxy(1, 1); textattr(uifc.hclr | (uifc.bclr << 4) | BLINK); gettextinfo(&sbtxtinfo); diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c index 938f7c8468..5e8d01ac17 100644 --- a/src/syncterm/syncterm.c +++ b/src/syncterm/syncterm.c @@ -137,6 +137,7 @@ struct syncterm_settings settings; char *font_names[sizeof(conio_fontdata) / sizeof(struct conio_font_data_struct)]; struct vmem_cell *scrollback_buf = NULL; unsigned int scrollback_lines = 0; +unsigned int scrollback_pos = 0; unsigned int scrollback_mode = C80; unsigned int scrollback_cols = 80; int safe_mode = 0; diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h index cc01981bdf..dde9683e2f 100644 --- a/src/syncterm/syncterm.h +++ b/src/syncterm/syncterm.h @@ -87,6 +87,7 @@ extern struct vmem_cell *scrollback_buf; extern uint32_t *scrollback_fbuf; extern uint32_t *scrollback_bbuf; extern unsigned int scrollback_lines; +extern unsigned int scrollback_pos; extern unsigned int scrollback_mode; extern unsigned int scrollback_cols; extern struct syncterm_settings settings; diff --git a/src/syncterm/term.c b/src/syncterm/term.c index a4544e973c..214a076c7d 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -3771,6 +3771,7 @@ doterm(struct bbslist *bbs) uifcmsg("Disconnected", "`Disconnected`\n\nRemote host dropped connection"); check_exit(false); + scrollback_pos = cterm->backpos; cterm_clearscreen(cterm, cterm->attr); /* Clear screen into * scrollback */ scrollback_lines = cterm->backpos; @@ -4130,6 +4131,7 @@ doterm(struct bbslist *bbs) "Selecting Yes closes the connection\n")) { freescreen(savscrn); setup_mouse_events(&ms); + scrollback_pos = cterm->backpos; cterm_clearscreen(cterm, cterm->attr); /* Clear screen into * scrollback */ scrollback_lines = cterm->backpos; @@ -4161,6 +4163,7 @@ doterm(struct bbslist *bbs) j = wherey(); switch (syncmenu(bbs, &speed)) { case -1: + scrollback_pos = cterm->backpos; cterm_clearscreen(cterm, cterm->attr); /* Clear screen into * scrollback */ scrollback_lines = cterm->backpos; @@ -4204,6 +4207,7 @@ doterm(struct bbslist *bbs) break; case 12: #endif + scrollback_pos = cterm->backpos; cterm_clearscreen(cterm, cterm->attr); /* Clear screen into * scrollback */ scrollback_lines = cterm->backpos; -- GitLab