--- 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