Mercurial > ~mikael > mcabber > hg
diff mcabber/src/commands.c @ 1573:ece4f26bf9ff
Add count parameter to roster up/down command
(Based on a patch from knyar in the issue tracker)
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 13 Apr 2009 00:26:56 +0200 |
parents | 248da27faff3 |
children | 0a1f59dc503d |
line wrap: on
line diff
--- a/mcabber/src/commands.c Sat Apr 11 12:30:51 2009 +0200 +++ b/mcabber/src/commands.c Mon Apr 13 00:26:56 2009 +0200 @@ -633,6 +633,21 @@ } } +// roster_updown(updown, nitems) +// updown: -1=up, +1=down +inline static void roster_updown(int updown, char *nitems) +{ + int nbitems; + + if (!nitems || !*nitems) + nbitems = 1; + else + nbitems = strtol(nitems, NULL, 10); + + if (nbitems > 0) + scr_RosterUpDown(updown, nbitems); +} + /* Commands callback functions */ /* All these do_*() functions will be called with a "arg" parameter */ /* (with arg not null) */ @@ -701,9 +716,9 @@ scr_RosterSearch(arg); update_roster = TRUE; } else if (!strcasecmp(subcmd, "up")) { - scr_RosterUp(); + roster_updown(-1, arg); } else if (!strcasecmp(subcmd, "down")) { - scr_RosterDown(); + roster_updown(1, arg); } else if (!strcasecmp(subcmd, "group_prev")) { scr_RosterPrevGroup(); } else if (!strcasecmp(subcmd, "group_next")) { @@ -1534,7 +1549,7 @@ if (!nlines || !*nlines) nblines = 0; else - nblines = atoi(nlines); + nblines = strtol(nlines, NULL, 10); if (nblines >= 0) scr_BufferScrollUpDown(updown, nblines); @@ -1934,7 +1949,7 @@ foreach_group_member(bud, &move_group_member, name_utf8); // Let's jump to the previous buddy, because this group name should // disappear when we receive the server answer. - scr_RosterUp(); + scr_RosterUpDown(-1, 1); } else { // Rename a single buddy guint del_name = 0; @@ -1988,7 +2003,7 @@ guint msgflag; jb_updatebuddy(bjid, name, *group_utf8 ? group_utf8 : NULL); - scr_RosterUp(); + scr_RosterUpDown(-1, 1); // If the buddy has a pending message flag, // we remove it temporarily in order to reset the global group