Mercurial > hg
changeset 2045:7f06eb956734
Correctly set the alternate buffer after roster up|down N with N > 1
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Tue, 27 Nov 2012 19:09:39 +0100 |
parents | c00b919cf4ac |
children | a60b933d04cc |
files | mcabber/mcabber/screen.c |
diffstat | 1 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/mcabber/screen.c Tue Nov 27 15:26:26 2012 +0100 +++ b/mcabber/mcabber/screen.c Tue Nov 27 19:09:39 2012 +0100 @@ -2449,14 +2449,29 @@ void scr_roster_up_down(int updown, unsigned int n) { unsigned int i; + GList *new_buddy = current_buddy; + GList *tmp_buddy; + + if (!current_buddy) + return; if (updown < 0) { - for (i = 0; i < n; i++) - set_current_buddy(g_list_previous(current_buddy)); + for (i = 0; i < n; i++) { + tmp_buddy = g_list_previous(new_buddy); + if (tmp_buddy) + new_buddy = tmp_buddy; + } } else { - for (i = 0; i < n; i++) - set_current_buddy(g_list_next(current_buddy)); + for (i = 0; i < n; i++) { + 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();