mirror of
https://github.com/weechat/weechat.git
synced 2026-06-12 14:14:48 +02:00
irc: fix autojoin of channels when private buffers are opened (issue #2012)
This commit is contained in:
@@ -20,6 +20,7 @@ New features::
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* irc: fix autojoin of channels when private buffers are opened (issue #2012)
|
||||
* irc: fix string comparison when CASEMAPPING is set to "ascii"
|
||||
* script: fix crash when a `/script` command triggers another `/script` command (issue #923)
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -797,6 +797,16 @@ TEST(IrcServer, GetDefaultMsg)
|
||||
/* TODO: write tests */
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* irc_server_has_channels
|
||||
*/
|
||||
|
||||
TEST(IrcServer, HasChannels)
|
||||
{
|
||||
/* TODO: write tests */
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* irc_server_alloc
|
||||
|
||||
Reference in New Issue
Block a user