mirror of
https://github.com/weechat/weechat.git
synced 2026-07-01 15:26:37 +02:00
irc: fix autojoin of channels when private buffers are opened (issue #2012)
This commit is contained in:
@@ -1596,6 +1596,25 @@ irc_server_buffer_set_input_multiline (struct t_irc_server *server,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if a server has channels opened.
|
||||
*/
|
||||
|
||||
int
|
||||
irc_server_has_channels (struct t_irc_server *server)
|
||||
{
|
||||
struct t_irc_channel *ptr_channel;
|
||||
|
||||
for (ptr_channel = server->channels; ptr_channel;
|
||||
ptr_channel = ptr_channel->next_channel)
|
||||
{
|
||||
if (ptr_channel->type == IRC_CHANNEL_TYPE_CHANNEL)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocates a new server and adds it to the servers queue.
|
||||
*
|
||||
@@ -5846,7 +5865,7 @@ irc_server_autojoin_create_buffers (struct t_irc_server *server)
|
||||
* buffers are opened only if auto-join was not already done
|
||||
* and if no channels are currently opened
|
||||
*/
|
||||
if (server->autojoin_done || server->channels)
|
||||
if (server->autojoin_done || irc_server_has_channels (server))
|
||||
return;
|
||||
|
||||
/* evaluate server option "autojoin" */
|
||||
@@ -6007,7 +6026,7 @@ irc_server_autojoin_channels (struct t_irc_server *server)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!server->autojoin_done && !server->channels)
|
||||
if (!server->autojoin_done && !irc_server_has_channels (server))
|
||||
{
|
||||
/* auto-join when connecting to server for first time */
|
||||
autojoin = irc_server_eval_expression (
|
||||
@@ -6021,7 +6040,7 @@ irc_server_autojoin_channels (struct t_irc_server *server)
|
||||
if (autojoin)
|
||||
free (autojoin);
|
||||
}
|
||||
else if (server->channels)
|
||||
else if (irc_server_has_channels (server))
|
||||
{
|
||||
/* auto-join after disconnection (only rejoins opened channels) */
|
||||
autojoin = irc_server_build_autojoin (server);
|
||||
|
||||
@@ -387,6 +387,7 @@ extern char *irc_server_get_default_msg (const char *default_msg,
|
||||
const char *target_nick);
|
||||
extern void irc_server_buffer_set_input_multiline (struct t_irc_server *server,
|
||||
int multiline);
|
||||
extern int irc_server_has_channels (struct t_irc_server *server);
|
||||
extern struct t_irc_server *irc_server_alloc (const char *name);
|
||||
extern struct t_irc_server *irc_server_alloc_with_url (const char *irc_url);
|
||||
extern void irc_server_apply_command_line_options (struct t_irc_server *server,
|
||||
|
||||
Reference in New Issue
Block a user