Improve handling scrollback when gui_tab_server==FALSE

Fixes #925.
This commit is contained in:
RichardHitt 2014-03-24 12:46:02 -07:00 committed by TingPing
parent 46e449f110
commit 1a3bfdce75
2 changed files with 13 additions and 2 deletions

View File

@ -48,6 +48,7 @@
#include "text.h" #include "text.h"
#include "ctcp.h" #include "ctcp.h"
#include "hexchatc.h" #include "hexchatc.h"
#include "chanopt.h"
void void
@ -583,6 +584,7 @@ inbound_ujoin (server *serv, char *chan, char *nick, char *ip,
const message_tags_data *tags_data) const message_tags_data *tags_data)
{ {
session *sess; session *sess;
int found_unused = FALSE;
/* already joined? probably a bnc */ /* already joined? probably a bnc */
sess = find_channel (serv, chan); sess = find_channel (serv, chan);
@ -594,6 +596,7 @@ inbound_ujoin (server *serv, char *chan, char *nick, char *ip,
{ {
/* find a "<none>" tab and use that */ /* find a "<none>" tab and use that */
sess = find_unused_session (serv); sess = find_unused_session (serv);
found_unused = sess != NULL;
if (!sess) if (!sess)
/* last resort, open a new tab/window */ /* last resort, open a new tab/window */
sess = new_ircwindow (serv, chan, SESS_CHANNEL, 1); 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); safe_strcpy (sess->channel, chan, CHANLEN);
if (found_unused)
{
chanopt_load (sess);
scrollback_load (sess);
}
fe_set_channel (sess); fe_set_channel (sess);
fe_set_title (sess); fe_set_title (sess);

View File

@ -79,7 +79,10 @@ scrollback_get_filename (session *sess)
g_free (buf); g_free (buf);
chan = log_create_filename (sess->channel); chan = log_create_filename (sess->channel);
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); 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); free (chan);
return buf; return buf;
@ -207,7 +210,7 @@ scrollback_save (session *sess, char *text)
time_t stamp; time_t stamp;
int len; int len;
if (sess->type == SESS_SERVER) if (sess->type == SESS_SERVER && prefs.hex_gui_tab_server == 1)
return; return;
if (sess->text_scrollback == SET_DEFAULT) if (sess->text_scrollback == SET_DEFAULT)