mirror of
https://git.planet-casio.com/Lephenixnoir/JustUI.git
synced 2024-12-29 13:03:40 +01:00
jlist: add user data pointer
This allows the info and paint functions to access user data associated with the list without going through globals.
This commit is contained in:
parent
12b29f8223
commit
7587dfa17c
2 changed files with 10 additions and 4 deletions
|
@ -77,6 +77,8 @@ typedef struct jlist {
|
||||||
|
|
||||||
/* Currently selected item, -1 if none */
|
/* Currently selected item, -1 if none */
|
||||||
int cursor;
|
int cursor;
|
||||||
|
/* User data pointer */
|
||||||
|
void *user;
|
||||||
|
|
||||||
} jlist;
|
} jlist;
|
||||||
|
|
||||||
|
@ -91,8 +93,9 @@ jlist *jlist_create(jlist_item_info_function info_function,
|
||||||
|
|
||||||
/* jlist_update_model(): Update jlists's information about the model
|
/* jlist_update_model(): Update jlists's information about the model
|
||||||
The new model size is passed as parameter. The model is refreshed by
|
The new model size is passed as parameter. The model is refreshed by
|
||||||
repeatedly calling the info function. */
|
repeatedly calling the info function. The user pointer is also updated. To
|
||||||
void jlist_update_model(jlist *l, int item_count);
|
keep it unchanged, pass `l->user` as third parameter. */
|
||||||
|
void jlist_update_model(jlist *l, int item_count, void *user);
|
||||||
|
|
||||||
/* jlist_clear(): Remove all items */
|
/* jlist_clear(): Remove all items */
|
||||||
void jlist_clear(jlist *l);
|
void jlist_clear(jlist *l);
|
||||||
|
|
|
@ -37,6 +37,7 @@ jlist *jlist_create(jlist_item_info_function info_function,
|
||||||
l->info_function = info_function;
|
l->info_function = info_function;
|
||||||
l->paint_function = paint_function;
|
l->paint_function = paint_function;
|
||||||
l->cursor = -1;
|
l->cursor = -1;
|
||||||
|
l->user = NULL;
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,8 +114,10 @@ int jlist_selected_item(jlist *l)
|
||||||
// Item management
|
// Item management
|
||||||
//---
|
//---
|
||||||
|
|
||||||
void jlist_update_model(jlist *l, int item_count)
|
void jlist_update_model(jlist *l, int item_count, void *user)
|
||||||
{
|
{
|
||||||
|
l->user = user;
|
||||||
|
|
||||||
if(l->item_count != item_count) {
|
if(l->item_count != item_count) {
|
||||||
l->items = realloc(l->items, item_count * sizeof *l->items);
|
l->items = realloc(l->items, item_count * sizeof *l->items);
|
||||||
if(!l->items) {
|
if(!l->items) {
|
||||||
|
@ -138,7 +141,7 @@ void jlist_update_model(jlist *l, int item_count)
|
||||||
|
|
||||||
void jlist_clear(jlist *l)
|
void jlist_clear(jlist *l)
|
||||||
{
|
{
|
||||||
jlist_update_model(l, 0);
|
jlist_update_model(l, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
jrect jlist_selected_region(jlist *l)
|
jrect jlist_selected_region(jlist *l)
|
||||||
|
|
Loading…
Reference in a new issue