1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 22:36:38 +02:00

Fixed nicklist sort mode: now modes are not cumulated any more (so for example all op will be sorted together)

This commit is contained in:
Sebastien Helleu
2005-05-07 06:56:01 +00:00
parent f88b75b241
commit e7c899014c
2 changed files with 44 additions and 8 deletions
+22 -4
View File
@@ -51,6 +51,26 @@ nick_find_color (t_irc_nick *nick)
return COLOR_WIN_NICK_FIRST + color;
}
/*
* nick_score_for_sort: return score for sorting nick, according to privileges
*/
int
nick_score_for_sort (t_irc_nick *nick)
{
if (nick->is_chanowner)
return -32;
if (nick->is_chanadmin)
return -16;
if (nick->is_op)
return -8;
if (nick->is_halfop)
return -4;
if (nick->has_voice)
return -2;
return 0;
}
/*
* nick_compare: compare two nicks
* return: -1 is nick1 < nick2
@@ -64,10 +84,8 @@ nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
{
int score1, score2, comp;
score1 = - ( (nick1->is_chanowner * 32) + (nick1->is_chanadmin * 16) +
(nick1->is_op * 8) + (nick1->is_halfop * 4) + (nick1->has_voice * 2) );
score2 = - ( (nick2->is_chanowner * 32) + (nick2->is_chanadmin * 16) +
(nick2->is_op * 8) + (nick2->is_halfop * 4) + (nick2->has_voice * 2) );
score1 = nick_score_for_sort (nick1);
score2 = nick_score_for_sort (nick2);
comp = strcasecmp(nick1->nick, nick2->nick);
if (comp > 0)
+22 -4
View File
@@ -51,6 +51,26 @@ nick_find_color (t_irc_nick *nick)
return COLOR_WIN_NICK_FIRST + color;
}
/*
* nick_score_for_sort: return score for sorting nick, according to privileges
*/
int
nick_score_for_sort (t_irc_nick *nick)
{
if (nick->is_chanowner)
return -32;
if (nick->is_chanadmin)
return -16;
if (nick->is_op)
return -8;
if (nick->is_halfop)
return -4;
if (nick->has_voice)
return -2;
return 0;
}
/*
* nick_compare: compare two nicks
* return: -1 is nick1 < nick2
@@ -64,10 +84,8 @@ nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
{
int score1, score2, comp;
score1 = - ( (nick1->is_chanowner * 32) + (nick1->is_chanadmin * 16) +
(nick1->is_op * 8) + (nick1->is_halfop * 4) + (nick1->has_voice * 2) );
score2 = - ( (nick2->is_chanowner * 32) + (nick2->is_chanadmin * 16) +
(nick2->is_op * 8) + (nick2->is_halfop * 4) + (nick2->has_voice * 2) );
score1 = nick_score_for_sort (nick1);
score2 = nick_score_for_sort (nick2);
comp = strcasecmp(nick1->nick, nick2->nick);
if (comp > 0)