X-Git-Url: https://git.deb.at/w?p=pkg%2Fabook.git;a=blobdiff_plain;f=list.c;h=1f0af7942c8fa4515c57ebaeacaec3a37cbed883;hp=ca4892baea2e4f7bd495b225c0649c14f3052ac6;hb=aa2211628a295b85990dbfd8af031d152b583f07;hpb=9c91aba7c7f7e47ec1a90b58d7f238c6b043dac1 diff --git a/list.c b/list.c index ca4892b..1f0af79 100644 --- a/list.c +++ b/list.c @@ -24,6 +24,7 @@ int curitem = -1; int first_list_item = -1; +int scroll_speed = 2; char *selected = NULL; extern abook_field_list *fields_list; @@ -130,6 +131,7 @@ init_list() { list = newwin(LIST_LINES, LIST_COLS, LIST_TOP, 0); scrollok(list, TRUE); + scroll_speed = abs(opt_get_int(INT_SCROLL_SPEED)); } void @@ -352,6 +354,49 @@ scroll_down() refresh_list(); } +void +scroll_list_up() +{ + if(first_list_item <= 0) { + if(curitem != 0) { + curitem--; + refresh_list(); + } + return; + } + + first_list_item -= scroll_speed; + if(first_list_item < 0) { + first_list_item = 0; + } + if(curitem > LAST_LIST_ITEM) { + curitem = LAST_LIST_ITEM; + } + + refresh_list(); +} + +void +scroll_list_down() +{ + if(LAST_LIST_ITEM > db_n_items() - 2) { + if(curitem < LAST_LIST_ITEM) { + curitem++; + refresh_list(); + } + return; + } + + first_list_item += scroll_speed; + if(LAST_LIST_ITEM > db_n_items() - 1) { + first_list_item = db_n_items() - LIST_LINES; + } + if(curitem < first_list_item) { + curitem = first_list_item; + } + + refresh_list(); +} void page_up()