changeset 2048:349e3c3eb874

Merge main with crew
author Mikael Berthe <mikael@lilotux.net>
date Tue, 27 Nov 2012 19:49:50 +0100
parents a60b933d04cc (diff) 27cbd1b7ec2a (current diff)
children 0ba755e5dc48
files
diffstat 1 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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();