diff mcabber/src/buddies.c @ 74:b392112ab995

[/trunk] Changeset 88 by mikael * Switch to using hbuf, the new history buffer implementation. * I've had to rewrite some parts of the interface, and I have removed the frames for the roster and the chat window. * The wrapping is not perfect, as the prefix is not yet treated separately... * Seems to be a display problem when receiving UTF-8, too. :-(
author mikael
date Sat, 16 Apr 2005 16:37:31 +0000
parents 5654c4231de1
children
line wrap: on
line diff
--- a/mcabber/src/buddies.c	Sat Apr 16 11:59:26 2005 +0000
+++ b/mcabber/src/buddies.c	Sat Apr 16 16:37:31 2005 +0000
@@ -13,7 +13,7 @@
 #define STR_EMPTY(s) ((s)[0] == '\0')
 
 /* global vars for BUDDIES.C */
-int buddySelected = 1;		/* Hold the selected Buddy  */
+int buddySelected = 0;		/* Hold the selected Buddy  */
 int buddyOffset = 0;		/* Hold the roster offset   */
 
 static LIST_HEAD(buddy_list);
@@ -126,20 +126,21 @@
   int n;
   int maxx, maxy;
   int fakeOffset = buddyOffset;
-  char name[ROSTER_WEIGHT];
+  char name[ROSTER_WIDTH];
 
   getmaxyx(win, maxy, maxx);
-  name[ROSTER_WEIGHT-8] = 0;
+  maxx --;  // last char is for vertical border
+  name[ROSTER_WIDTH-8] = 0;
 
   /* cleanup of roster window */
   wattrset(win, COLOR_PAIR(COLOR_GENERAL));
-  for (i = 1; i < maxy - 1; i++) {
-    mvwprintw(win, i, 1, "");
-    for (n = 2; n < maxx; n++)
+  for (i = 0; i < maxy; i++) {
+    mvwprintw(win, i, 0, "");
+    for (n = 0; n < maxx; n++)
       waddch(win, ' ');
   }
 
-  i = 1;
+  i = 0;
   list_for_each_safe(pos, nn, &buddy_list) {
 
     char status = '?';
@@ -169,11 +170,11 @@
       else
 	wattrset(win, COLOR_PAIR(COLOR_BD_DES));
     }
-    mvwprintw(win, i, 1, "");
+    mvwprintw(win, i, 0, "");
     for (n = 2; n < maxx; n++)
       waddch(win, ' ');
-    strncpy(name, tmp->name, ROSTER_WEIGHT-8);
-    mvwprintw(win, i, 1, " %c[%c] %s", pending, status, name);
+    strncpy(name, tmp->name, ROSTER_WIDTH-8);
+    mvwprintw(win, i, 0, " %c[%c] %s", pending, status, name);
     i++;
     if (i >= maxy - 1)
       break;
@@ -195,9 +196,8 @@
 {
   int x, y;
   getmaxyx(scr_GetRosterWindow(), y, x);
-  y -= 2;
 
-  if (buddySelected < bud_BuddyCount()) {
+  if (buddySelected+1 < bud_BuddyCount()) {
     buddySelected++;
     if (buddySelected > y)
       buddyOffset++;
@@ -214,9 +214,9 @@
  */
 void bud_RosterUp(void)
 {
-  if (buddySelected > 1) {
+  if (buddySelected > 0) {
     buddySelected--;
-    if (buddySelected - buddyOffset < 1)
+    if (buddySelected < buddyOffset)
       buddyOffset--;
     bud_DrawRoster(scr_GetRosterWindow());
   }
@@ -238,7 +238,7 @@
 
   list_for_each_safe(pos, n, &buddy_list) {
     tmp = buddy_entry(pos);
-    if (i == buddySelected - 1) {
+    if (i == buddySelected) {
       return tmp;
     }
     i++;