changeset 84:134fe2567f07

[/trunk] Changeset 98 by mikael * Roster scrolling.
author mikael
date Sun, 17 Apr 2005 19:15:51 +0000
parents a95e2fc9ea6b
children 19f57e681252
files mcabber/src/screen.c
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/screen.c	Sun Apr 17 18:16:19 2005 +0000
+++ b/mcabber/src/screen.c	Sun Apr 17 19:15:51 2005 +0000
@@ -433,12 +433,21 @@
     return;
   }
 
-  // TODO: update offset if necessary
+  // Update offset if necessary
+  i = g_list_position(buddylist, current_buddy);
+  if (i == -1) { // This is bad
+    scr_LogPrint("Doh! Can't find current selected buddy!!");
+    return;
+  } else if (i < offset) {
+    offset = i;
+  } else if (i+1 > offset + maxy) {
+    offset = i + 1 - maxy;
+  }
 
   buddy = buddylist;
   rOffset = offset;
 
-  for (i=0; i<maxy && buddy; i++, buddy = g_list_next(buddy)) {
+  for (i=0; i<maxy && buddy; buddy = g_list_next(buddy)) {
 
     char status = '?';
     char pending = ' ';
@@ -470,6 +479,8 @@
     // TODO: status is meaningless for groups:
     if (buddy_gettype(BUDDATA(buddy)) & ROSTER_TYPE_GROUP) status='G';
     mvwprintw(rosterWnd, i, 0, " %c[%c] %s", pending, status, name);
+
+    i++;
   }
 
   update_panels();