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()) ) {
case CANCEL_KEY:
free(str);
return NULL;
+ case XCTRL('u'):
+ i = 0;
+ break;
#ifdef USE_FILESEL
case TAB_KEY:
if( ! (flags & ESTR_USE_FILESEL) )
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 )
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 );
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);
}