From 819095bcf226d6b1a1cd71f8b0150710bc9850a0 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Wed, 11 Mar 2026 23:43:58 -0400 Subject: Add Start+T, dup checking in scr_create(). --- src/cmd.c | 9 +++------ src/irc.c | 12 +++++++++++- src/screen.c | 5 ++++- 3 files changed, 18 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/cmd.c b/src/cmd.c index 0c6f1a6..0ef8617 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -167,8 +167,7 @@ static void do_j(void) { } if(have_commas()) return; - if(!scr_getbyname(arg1)) - scr_create(arg1, 1); + scr_create(arg1, 1); do_j1(); } @@ -355,18 +354,16 @@ static void do_color(void) { } static void do_query(void) { - /* don't create a query if we already got one! */ - if(scr_getbyname(arg1)) - return; - if(scr_create(arg1, 1) == 0xff) { err_marker(); scr_print_current("Can't create query, all screens in use\n"); return; } + /* scr_print_current("Starting conversation with "); scr_print_current(arg1); scr_eol_current(); + */ } static void do_msg(void) { diff --git a/src/irc.c b/src/irc.c index 9777392..fa39df5 100644 --- a/src/irc.c +++ b/src/irc.c @@ -292,7 +292,7 @@ static void do_topic(void) { static void do_kick(void) { scr_print_active(msg_src); scr_print_active(" has kicked "); - scr_print_active(msg_args[2]); + scr_print_active(msg_args[1]); scr_print_active(" from "); scr_print_active(msg_dest); print_reason(); @@ -768,6 +768,13 @@ void ui_whois_or_ping(char is_ping) { } } +void ui_topic(void) { + if(!cur_is_chan()) + return; + txbuf_set_str2("TOPIC ", scr_names[scr_current]); + txbuf_send(); +} + void ui_part(void) { if(!cur_is_chan()) return; @@ -863,6 +870,9 @@ static void start_keystroke(void) { case 'p': ui_whois_or_ping(1); return; + case 't': + ui_topic(); + break; case 's': edbox_hide(); /* fall thru */ diff --git a/src/screen.c b/src/screen.c index cae2585..5852208 100644 --- a/src/screen.c +++ b/src/screen.c @@ -61,10 +61,13 @@ void scr_init(void) { scr_display(0); } -/* TODO: don't create screen if it already exists! */ char scr_create(const char *name, char display) { int i; + /* don't create a duplicate screen */ + if( (i = scr_getbyname(name)) ) + return i; + for(i = 0; i < MAX_SCREENS; i++) { if(scr_status[i] == SCR_UNUSED) { strcpy(scr_names[i], name); -- cgit v1.2.3