aboutsummaryrefslogtreecommitdiffstats
path: root/irc_im.c
diff options
context:
space:
mode:
Diffstat (limited to 'irc_im.c')
-rw-r--r--irc_im.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/irc_im.c b/irc_im.c
index 8a10cede..4dbcddce 100644
--- a/irc_im.c
+++ b/irc_im.c
@@ -692,7 +692,7 @@ static gboolean bee_irc_channel_chat_join( irc_channel_t *ic )
nick = ic->irc->user->nick;
ic->flags |= IRC_CHANNEL_CHAT_PICKME;
- acc->prpl->chat_join( acc->ic, room, nick, NULL );
+ acc->prpl->chat_join( acc->ic, room, nick, NULL, &ic->set );
ic->flags &= ~IRC_CHANNEL_CHAT_PICKME;
return FALSE;
@@ -787,7 +787,7 @@ static gboolean bee_irc_channel_init( irc_channel_t *ic )
static char *set_eval_room_account( set_t *set, char *value )
{
struct irc_channel *ic = set->data;
- account_t *acc;
+ account_t *acc, *oa;
if( !( acc = account_get( ic->irc->b, value ) ) )
return SET_INVALID;
@@ -797,6 +797,13 @@ static char *set_eval_room_account( set_t *set, char *value )
return SET_INVALID;
}
+ if( set->value && ( oa = account_get( ic->irc->b, set->value ) ) &&
+ oa->prpl->chat_free_settings )
+ oa->prpl->chat_free_settings( oa, &ic->set );
+
+ if( acc->prpl->chat_add_settings )
+ acc->prpl->chat_add_settings( acc, &ic->set );
+
return g_strdup_printf( "%s(%s)", acc->prpl->name, acc->user );
}