selector: always rotate options #302

pull/312/head
nick black 5 years ago
parent d30df23f43
commit 6a4cfcde95
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -234,7 +234,7 @@ char* ncselector_selected(const ncselector* n){
} }
void ncselector_previtem(ncselector* n, char** newitem){ void ncselector_previtem(ncselector* n, char** newitem){
if(n->selected == n->startdisp && n->maxdisplay && n->maxdisplay < n->itemcount){ if(n->selected == n->startdisp){
if(n->startdisp-- == 0){ if(n->startdisp-- == 0){
n->startdisp = n->itemcount - 1; n->startdisp = n->itemcount - 1;
} }
@ -250,14 +250,16 @@ void ncselector_previtem(ncselector* n, char** newitem){
} }
void ncselector_nextitem(ncselector* n, char** newitem){ void ncselector_nextitem(ncselector* n, char** newitem){
++n->selected; unsigned lastdisp = n->startdisp;
if(n->maxdisplay && n->maxdisplay < n->itemcount){ lastdisp += n->maxdisplay && n->maxdisplay < n->itemcount ? n->maxdisplay : n->itemcount;
if((n->startdisp + n->maxdisplay) % n->itemcount == (n->selected % n->itemcount)){ --lastdisp;
if(++n->startdisp == n->itemcount){ lastdisp %= n->itemcount;
n->startdisp = 0; if(lastdisp == n->selected){
} if(++n->startdisp == n->itemcount){
n->startdisp = 0;
} }
} }
++n->selected;
if(n->selected == n->itemcount){ if(n->selected == n->itemcount){
n->selected = 0; n->selected = 0;
} }

Loading…
Cancel
Save