From 9761177a2c81fea2d82401eede7ca6ca7d329490 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Fri, 5 May 2006 12:59:16 +0000 Subject: [PATCH] Fixed nicklist sort bug --- ChangeLog | 5 ++++- src/irc/irc-nick.c | 43 +++++++++++++++++++------------------- weechat/ChangeLog | 5 ++++- weechat/src/irc/irc-nick.c | 43 +++++++++++++++++++------------------- 4 files changed, 52 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index 00fd7d954..7ce9a9a3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,12 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2006-04-23 +ChangeLog - 2006-05-05 Version 0.1.9 (under dev!): + * fixed nicklist sort bug + * added russian translations (thanks to Pavel Shevchuk) + * added german doc (thanks to Frank Zacharias) * added missing IRC commands (290, 292, 437, 974) * fixed crash when multiple pv have same name: now it's forbidden and pv buffer is not renamed (when a nick changes) if another diff --git a/src/irc/irc-nick.c b/src/irc/irc-nick.c index f0542d164..61023b398 100644 --- a/src/irc/irc-nick.c +++ b/src/irc/irc-nick.c @@ -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) */ diff --git a/weechat/ChangeLog b/weechat/ChangeLog index 00fd7d954..7ce9a9a3c 100644 --- a/weechat/ChangeLog +++ b/weechat/ChangeLog @@ -1,9 +1,12 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2006-04-23 +ChangeLog - 2006-05-05 Version 0.1.9 (under dev!): + * fixed nicklist sort bug + * added russian translations (thanks to Pavel Shevchuk) + * added german doc (thanks to Frank Zacharias) * added missing IRC commands (290, 292, 437, 974) * fixed crash when multiple pv have same name: now it's forbidden and pv buffer is not renamed (when a nick changes) if another diff --git a/weechat/src/irc/irc-nick.c b/weechat/src/irc/irc-nick.c index f0542d164..61023b398 100644 --- a/weechat/src/irc/irc-nick.c +++ b/weechat/src/irc/irc-nick.c @@ -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) */