diff options
| author | B. Watson <urchlay@slackware.uk> | 2026-04-27 01:03:51 -0400 |
|---|---|---|
| committer | B. Watson <urchlay@slackware.uk> | 2026-04-27 01:03:51 -0400 |
| commit | 8c0820ada59c3a45c85c7ca1c7b0c9b111ae0967 (patch) | |
| tree | 5dbe1efa89b345f4f028bab524f45e3a654382cb /src | |
| parent | dd6820b88edc6d52ff9008781a2f27de85c24780 (diff) | |
| download | fujinet-chat-8c0820ada59c3a45c85c7ca1c7b0c9b111ae0967.tar.gz | |
Do not keep displaying a destroyed screen, do not destroy screens 1 and 2.
Diffstat (limited to 'src')
| -rw-r--r-- | src/irc.c | 17 | ||||
| -rw-r--r-- | src/screen.c | 8 |
2 files changed, 14 insertions, 11 deletions
@@ -209,13 +209,6 @@ static void do_ctcp(char is_notice) { } static void do_privmsg(void) { - /* TODO: this shouldn't be case-sensitive */ - /* - if(strstr(msg_text, config.nick)) - hilite = 1; - else - hilite = 0; - */ hilite = find_nick(); if(*msg_text == '\x01') { @@ -923,11 +916,15 @@ void start_keystroke(char c) { scrollback(); return; case 0x18: /* ^X */ - send_cur_chan_cmd("PART"); + if(scr_current > 2) + send_cur_chan_cmd("PART"); /* fall thru */ case 'x': - scr_prev = SCR_PRIV; - scr_destroy(scr_current); + if(scr_current > 2) { + scr_destroy(scr_current); + scr_current = scr_prev; + scr_prev = SCR_SERVER; + } return; case XCH_LEFT: case '+': diff --git a/src/screen.c b/src/screen.c index dd25938..d090e51 100644 --- a/src/screen.c +++ b/src/screen.c @@ -78,14 +78,20 @@ void scr_destroy(char s) { if(s < 2 || s >= MAX_SCREENS) return; + /* don't destroy if already destroyed (or never created) */ + if(screens[s].status == SCR_UNUSED) + return; + // pool_reclaim_lines(screens[s].pool, screens[s].line_list); pools[screens[s].pool].screen_count--; screens[s].title[0] = 0; screens[s].status = SCR_UNUSED; screens[s].pool = POOL_UNUSED; - screens[s].line_list = 0; screens[s].line_count = screens[s].scrollback_pos = 0; + + /* theoretically this could be 0, but as a safety net... */ + screens[s].line_list = (line_t *)END_MARKER; } void render_vis_buf(void) { |
