X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=ui.c;h=8db6b79e1c666c2d02b781f383461ff6bcc88e1a;hb=ef379a20d142cb95ba08c7887c8e3245269b3fdd;hp=9d59cc796d62b2a5f404f59646326af8bcfa6071;hpb=28b7c8bdd6dc85f7412233d99e5526e148f81d81;p=pkg%2Fabook.git diff --git a/ui.c b/ui.c index 9d59cc7..8db6b79 100644 --- a/ui.c +++ b/ui.c @@ -88,7 +88,7 @@ resize_abook() fprintf(stderr, "Warning: COLS=%d, LINES=%d\n", winsz.ws_col, winsz.ws_row); } #endif - + if(winsz.ws_col >= MIN_COLS && winsz.ws_row >= MIN_LINES) { #ifdef HAVE_RESIZETERM resizeterm(winsz.ws_row, winsz.ws_col); @@ -115,7 +115,7 @@ win_changed(int i) if( can_resize ) resize_abook(); else - should_resize = TRUE; + should_resize = TRUE; } #endif /* SIGWINCH */ @@ -217,7 +217,7 @@ int statusline_msg(char *msg) { int c; - + clear_statusline(); statusline_addstr(msg); c = getch(); @@ -375,15 +375,18 @@ get_commands() for(;;) { can_resize = TRUE; /* it's safe to resize now */ - hide_cursor(); - if( should_resize ) + if(!opt_get_bool(BOOL_SHOW_CURSOR)) + hide_cursor(); + if(should_resize) refresh_screen(); ch = getch(); - show_cursor(); + if(!opt_get_bool(BOOL_SHOW_CURSOR)) + show_cursor(); can_resize = FALSE; /* it's not safe to resize anymore */ - switch( ch ) { + switch(ch) { case 'q': return; - case 'Q': print_stderr(selected_items() ? + case 'Q': quit_abook(QUIT_DONTSAVE); break; + case 'P': print_stderr(selected_items() ? -1 : list_current_item()); return; case '?': @@ -472,7 +475,7 @@ ui_remove_items() if(statusline_ask_boolean("Remove selected item(s)", TRUE)) remove_selected_items(); - clear_statusline(); + clear_statusline(); refresh_list(); } @@ -488,27 +491,30 @@ ui_clear_database() void ui_find(int next) { - int item; + int item = -1; static char findstr[MAX_FIELD_LEN]; int search_fields[] = {NAME, EMAIL, NICK, -1}; + clear_statusline(); + if(next) { if( !*findstr ) return; } else { char *s; - clear_statusline(); s = ui_readline("/", findstr, MAX_FIELD_LEN - 1, 0); strncpy(findstr, s, MAX_FIELD_LEN); refresh_screen(); } - if( (item = find_item(findstr, curitem + !!next, - search_fields )) >= 0 ) { + if( (item = find_item(findstr, curitem + !!next, search_fields)) < 0 && + (item = find_item(findstr, 0, search_fields)) >= 0) + statusline_addstr("Search hit bottom, continuing at top"); + + if(item >= 0) { curitem = item; refresh_list(); } - } @@ -569,7 +575,7 @@ ui_print_database() return; fexport("text", handle, mode); - + pclose(handle); }