diff options
| author | B. Watson <urchlay@slackware.uk> | 2026-03-08 06:22:39 -0400 |
|---|---|---|
| committer | B. Watson <urchlay@slackware.uk> | 2026-03-08 06:22:39 -0400 |
| commit | fbc4daa87b2a6aaf355e2d3270d1ff726ab0ddae (patch) | |
| tree | 99e07979646b024cf31699aa85ba3c95306fa482 /src/irc.c | |
| parent | 1815d26c7042d3d592e624d8edf73805c7b3bc6d (diff) | |
| download | fujinet-chat-fbc4daa87b2a6aaf355e2d3270d1ff726ab0ddae.tar.gz | |
No dup queries, add more start key combos, add /names command.
Diffstat (limited to 'src/irc.c')
| -rw-r--r-- | src/irc.c | 50 |
1 files changed, 47 insertions, 3 deletions
@@ -24,6 +24,7 @@ static char *msg; /* with source removed */ static int msgbuf_len = 0, msg_len = 0; static char regged = 0, hilite = 0; +static char scr_prev = SCR_PRIV; /* static void join_channel(void) { @@ -529,18 +530,61 @@ static void scrollback() { scr_end_scrollback(); } +static void hunt_screen(signed char dir) { + signed char s = scr_current; + + do { + s += dir; + if(s < 0) + s = MAX_SCREENS - 1; + s %= MAX_SCREENS; + } while(scr_status[s] == SCR_UNUSED); + + scr_display(s); +} + +void switch_to_active() { + char i; + + for(i = 0; i < MAX_SCREENS; i++) { + if(scr_status[i] == SCR_ACTIVE) { + scr_prev = scr_current; + scr_display(i); + } + } +} + static void start_keystroke(void) { char i, s; i = cgetc(); if(i >= '1' && i <= '7') { s = i - '1'; - if(scr_status[s] != SCR_UNUSED) - scr_display(s); + if(s != scr_current) { + if(scr_status[s] != SCR_UNUSED) { + scr_prev = scr_current; + scr_display(s); + } + } } else if(i == CH_CURS_UP || i == '-') { scrollback(); - } else if(i == 0x1b) { /* escape */ + } else if(i == CH_ESC) { + scr_prev = SCR_PRIV; scr_destroy(scr_current); + } else if(i == CH_CURS_LEFT || i == '+') { + scr_prev = scr_current; + hunt_screen(-1); + } else if(i == CH_CURS_RIGHT || i == '*') { + scr_prev = scr_current; + hunt_screen(1); + } else if(i == CH_TAB) { + i = scr_current; + scr_display(scr_prev); + scr_prev = i; + } else if(i == 'a' || i == 'A') { + switch_to_active(); + } else if(i == 's' || i == 'S') { + edbox_hide(); } } |
