Fix selection in listbox_load_items()
Call listbox_fix_sel() after setting an initial selection in listbox_load_items() to make sure we do not pick a caption row. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
0ad6ff74df
commit
80a7267f8c
@ -82,20 +82,18 @@ void listbox_set_cb_data(struct listbox *lb, void *cb_data)
|
|||||||
lb->cb_data = cb_data;
|
lb->cb_data = cb_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void listbox_fix_sel(struct listbox *, int);
|
||||||
|
|
||||||
void listbox_load_items(struct listbox *lb, int item_count)
|
void listbox_load_items(struct listbox *lb, int item_count)
|
||||||
{
|
{
|
||||||
int i, ch;
|
int i, ch;
|
||||||
|
|
||||||
lb->item_count = item_count;
|
lb->item_count = item_count;
|
||||||
|
|
||||||
if (item_count > 0 && lb->item_sel < 0)
|
if (item_count == 0) {
|
||||||
lb->item_sel = 0;
|
lb->item_sel = -1;
|
||||||
|
|
||||||
if (lb->item_sel >= item_count)
|
|
||||||
lb->item_sel = item_count - 1;
|
|
||||||
|
|
||||||
if (item_count == 0)
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
free(lb->type);
|
free(lb->type);
|
||||||
free(lb->ch);
|
free(lb->ch);
|
||||||
@ -109,6 +107,14 @@ void listbox_load_items(struct listbox *lb, int item_count)
|
|||||||
lb->ch[item_count] = ch;
|
lb->ch[item_count] = ch;
|
||||||
|
|
||||||
wins_scrollwin_set_linecount(&(lb->sw), ch);
|
wins_scrollwin_set_linecount(&(lb->sw), ch);
|
||||||
|
|
||||||
|
if (item_count > 0 && lb->item_sel < 0) {
|
||||||
|
lb->item_sel = 0;
|
||||||
|
listbox_fix_sel(lb, 1);
|
||||||
|
} else if (lb->item_sel >= item_count) {
|
||||||
|
lb->item_sel = item_count - 1;
|
||||||
|
listbox_fix_sel(lb, -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void listbox_draw_deco(struct listbox *lb, int hilt)
|
void listbox_draw_deco(struct listbox *lb, int hilt)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user