]> git.deb.at Git - pkg/abook.git/blobdiff - estr.c
fixes
[pkg/abook.git] / estr.c
diff --git a/estr.c b/estr.c
index 8a4ce31f6246610925ad0058c0b7b5fc4d6f6a4c..93c2290d94c3ebd21d038386c485ff06bcd10832 100644 (file)
--- a/estr.c
+++ b/estr.c
@@ -81,13 +81,13 @@ wenter_string(WINDOW *win, const int maxlen, const int flags)
        str = MALLOC(size);
 
        for( ;; ) { /* main loop */
-               if(flags & ESTR_DONT_WRAP && x+i>COLS-2) {
+               if(flags & ESTR_DONT_WRAP && x+i > COLS-2) {
                        mvwaddnstr(win, y, x, str+(1+x+i-COLS), COLS-x-1);
                        wmove(win, y, COLS-1);
-                       wclrtoeol(win);
                } else
                        wmove(win, y, x + i);
 
+               wclrtoeol(win);
                wrefresh(win);
 
                switch( (ch = getch()) ) {
@@ -103,6 +103,9 @@ wenter_string(WINDOW *win, const int maxlen, const int flags)
                        case CANCEL_KEY:
                                free(str);
                                return NULL;
+                       case XCTRL('u'):
+                               i = 0;
+                               break;
 #ifdef USE_FILESEL
                        case TAB_KEY:
                                if( ! (flags & ESTR_USE_FILESEL) )
@@ -118,10 +121,8 @@ wenter_string(WINDOW *win, const int maxlen, const int flags)
                        continue;
                str[i++] = ch;
                waddch(win,ch);
-               if( i + 1 > size )
+               if( i + 1 >= size )
                        str = REALLOC( str, size *= 2 );
-               if( maxlen > 0 && i > maxlen)
-                       break;
        }
 out:
        if( i >= 0 && str != NULL )
@@ -316,7 +317,7 @@ filesel_sort_list()
                qsort((void *)lst, fdp, sizeof(struct filesel_list_item),
                                filenamecmp );
 
-       qsort((void *)lst + fdp * sizeof(struct filesel_list_item),
+       qsort((void *)(&lst[fdp]),
                        FILESEL_LAST_ITEM - fdp + 1,
                        sizeof(struct filesel_list_item),
                        filenamecmp );
@@ -356,8 +357,12 @@ filesel_highlight_line(WINDOW *win, int line)
 static void
 filesel_print_list_line(int i, int line)
 {
-       if( lst[i].type == FLSL_TYPE_DIR )
+       if( lst[i].type == FLSL_TYPE_DIR ) {
+               mvwaddch(filesel_list, line, 3, 'd');
+#ifdef A_BOLD
                wattron(filesel_list, A_BOLD);
+#endif
+       }
        
        mvwaddnstr(filesel_list, line, 5, lst[i].filename, COLS - 5);
 }