1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 14:56:39 +02:00

Fixed nicklist sort bug

This commit is contained in:
Sebastien Helleu
2006-05-05 12:59:16 +00:00
parent 3352658af4
commit 9761177a2c
4 changed files with 52 additions and 44 deletions
+22 -21
View File
@@ -163,6 +163,27 @@ nick_insert_sorted (t_irc_channel *channel, t_irc_nick *nick)
}
}
/*
* nick_resort: resort nick in the list
*/
void
nick_resort (t_irc_channel *channel, t_irc_nick *nick)
{
/* temporarly remove nick from list */
if (nick == channel->nicks)
channel->nicks = nick->next_nick;
else
nick->prev_nick->next_nick = nick->next_nick;
if (nick->next_nick)
nick->next_nick->prev_nick = nick->prev_nick;
if (nick == channel->last_nick)
channel->last_nick = nick->prev_nick;
/* insert again nick into sorted list */
nick_insert_sorted (channel, nick);
}
/*
* nick_new: allocate a new nick for a channel and add it to the nick list
*/
@@ -183,6 +204,7 @@ nick_new (t_irc_server *server, t_irc_channel *channel, char *nick_name,
NICK_SET_FLAG(new_nick, is_op, NICK_OP);
NICK_SET_FLAG(new_nick, is_halfop, NICK_HALFOP);
NICK_SET_FLAG(new_nick, has_voice, NICK_VOICE);
nick_resort (channel, new_nick);
return new_nick;
}
@@ -212,27 +234,6 @@ nick_new (t_irc_server *server, t_irc_channel *channel, char *nick_name,
return new_nick;
}
/*
* nick_resort: resort nick in the list
*/
void
nick_resort (t_irc_channel *channel, t_irc_nick *nick)
{
/* temporarly remove nick from list */
if (nick == channel->nicks)
channel->nicks = nick->next_nick;
else
nick->prev_nick->next_nick = nick->next_nick;
if (nick->next_nick)
nick->next_nick->prev_nick = nick->prev_nick;
if (nick == channel->last_nick)
channel->last_nick = nick->prev_nick;
/* insert again nick into sorted list */
nick_insert_sorted (channel, nick);
}
/*
* nick_change: change nickname and move it if necessary (list is sorted)
*/