diff --git a/src/common/inbound.c b/src/common/inbound.c index 47fe2e00..ea7c3c9b 100644 --- a/src/common/inbound.c +++ b/src/common/inbound.c @@ -48,6 +48,7 @@ #include "text.h" #include "ctcp.h" #include "hexchatc.h" +#include "chanopt.h" void @@ -583,6 +584,7 @@ inbound_ujoin (server *serv, char *chan, char *nick, char *ip, const message_tags_data *tags_data) { session *sess; + int found_unused = FALSE; /* already joined? probably a bnc */ sess = find_channel (serv, chan); @@ -594,6 +596,7 @@ inbound_ujoin (server *serv, char *chan, char *nick, char *ip, { /* find a "" tab and use that */ sess = find_unused_session (serv); + found_unused = sess != NULL; if (!sess) /* last resort, open a new tab/window */ sess = new_ircwindow (serv, chan, SESS_CHANNEL, 1); @@ -601,6 +604,11 @@ inbound_ujoin (server *serv, char *chan, char *nick, char *ip, } safe_strcpy (sess->channel, chan, CHANLEN); + if (found_unused) + { + chanopt_load (sess); + scrollback_load (sess); + } fe_set_channel (sess); fe_set_title (sess); diff --git a/src/common/text.c b/src/common/text.c index a01fc2c8..96442e6e 100644 --- a/src/common/text.c +++ b/src/common/text.c @@ -79,7 +79,10 @@ scrollback_get_filename (session *sess) g_free (buf); chan = log_create_filename (sess->channel); - buf = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "scrollback" G_DIR_SEPARATOR_S "%s" G_DIR_SEPARATOR_S "%s.txt", get_xdir (), net, chan); + if (chan[0]) + buf = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "scrollback" G_DIR_SEPARATOR_S "%s" G_DIR_SEPARATOR_S "%s.txt", get_xdir (), net, chan); + else + buf = NULL; free (chan); return buf; @@ -207,7 +210,7 @@ scrollback_save (session *sess, char *text) time_t stamp; int len; - if (sess->type == SESS_SERVER) + if (sess->type == SESS_SERVER && prefs.hex_gui_tab_server == 1) return; if (sess->text_scrollback == SET_DEFAULT)