# HG changeset patch # User Mikael Berthe # Date 1354042190 -3600 # Node ID 349e3c3eb87446cf9dffd75cca2fc735667fcb58 # Parent a60b933d04cc0275687d87c68697bb47ababe762# Parent 27cbd1b7ec2a95e2955f865be2056f81aad6ad10 Merge main with crew diff -r 27cbd1b7ec2a -r 349e3c3eb874 mcabber/mcabber/screen.c --- a/mcabber/mcabber/screen.c Tue Nov 27 19:55:45 2012 +0200 +++ b/mcabber/mcabber/screen.c Tue Nov 27 19:49:50 2012 +0100 @@ -2449,14 +2449,24 @@ void scr_roster_up_down(int updown, unsigned int n) { unsigned int i; - - if (updown < 0) { - for (i = 0; i < n; i++) - set_current_buddy(g_list_previous(current_buddy)); - } else { - for (i = 0; i < n; i++) - set_current_buddy(g_list_next(current_buddy)); + GList *new_buddy = current_buddy; + GList *tmp_buddy; + + if (!current_buddy) + return; + + for (i = 0; i < n; i++) { + if (updown < 0) + tmp_buddy = g_list_previous(new_buddy); + else + tmp_buddy = g_list_next(new_buddy); + if (tmp_buddy) + new_buddy = tmp_buddy; } + if (new_buddy == current_buddy) + return; + + set_current_buddy(new_buddy); if (chatmode) { last_activity_buddy = current_buddy; scr_show_buddy_window();