]> git.deb.at Git - pkg/abook.git/blobdiff - list.c
Imported Upstream version 0.5.4
[pkg/abook.git] / list.c
diff --git a/list.c b/list.c
index 6bd1793eb968735c9f26a061988d1e331285380c..40db302ef26e3d45a495dd408d69ea38c6ddb3be 100644 (file)
--- a/list.c
+++ b/list.c
@@ -1,6 +1,6 @@
 
 /*
- * $Id: list.c,v 1.21 2004/06/30 19:47:43 jheinonen Exp $
+ * $Id: list.c,v 1.26 2005/08/13 10:49:25 jheinonen Exp $
  *
  * by JH <jheinonen@users.sourceforge.net>
  *
@@ -17,6 +17,7 @@
 #include "list.h"
 #include "misc.h"
 #include "options.h"
+#include "xmalloc.h"
 
 #define MIN_EXTRA_COLUMN       ADDRESS /* 2 */
 #define MAX_EXTRA_COLUMN       LAST_FIELD
@@ -32,7 +33,7 @@ extern int items;
 extern list_item *database;
 extern struct abook_field abook_fields[];
 
-WINDOW *list = NULL;
+static WINDOW *list = NULL;
 
 static int
 init_extra_field(enum str_opts option)
@@ -82,17 +83,17 @@ void
 refresh_list()
 {
        int i, line;
-       
+
        werase(list);
 
        ui_print_number_of_items();
-       
-       if(items < 1) {
+
+       if(list_is_empty()) {
                refresh();
                wrefresh(list);
                return;
        }
-       
+
        if(curitem < 0)
                curitem = 0;
 
@@ -110,6 +111,11 @@ refresh_list()
                print_list_line(i, line, i == curitem);
         }
 
+       if(opt_get_bool(BOOL_SHOW_CURSOR)) {
+               wmove(list, curitem - first_list_item, 0);
+               /* need to call refresh() to update the cursor positions */
+               refresh();
+       }
         wrefresh(list);
 }
 
@@ -127,7 +133,7 @@ print_list_line(int i, int line, int highlight)
 
        if(selected[i])
                mvwaddch(list, line, 0, '*' );
-       
+
        mvwaddnstr(list, line, NAMEPOS, database[i][NAME],
                bytes2width(database[i][NAME], NAMELEN));
        if(opt_get_bool(BOOL_SHOW_ALL_EMAILS))
@@ -150,7 +156,7 @@ print_list_line(int i, int line, int highlight)
        if(highlight)
                wstandend(list);
 }
-       
+
 
 void
 list_headerline()
@@ -196,10 +202,10 @@ page_up()
 {
        if(curitem < 1)
                return;
-       
+
        curitem = curitem == first_list_item ?
                ((curitem -= LIST_LINES) < 0 ? 0 : curitem) : first_list_item;
-       
+
        refresh_list();
 }
 
@@ -262,7 +268,7 @@ goto_home()
 {
        if(items > 0)
                curitem = 0;
-       
+
        refresh_list();
 }
 
@@ -349,7 +355,7 @@ duplicate_item()
                return 1;
 
        for(i = 0; i < ITEM_FIELDS; i++)
-               item[i] = database[curitem][i] ? strdup(database[curitem][i]) :
+               item[i] = database[curitem][i] ? xstrdup(database[curitem][i]) :
                        NULL;
 
        if(add_item2database(item))