Pass index to 'list_delete' callback as well

This commit is contained in:
twinaphex 2014-10-10 22:36:30 +02:00
parent 9fee625113
commit a5de4f7f75
4 changed files with 11 additions and 8 deletions

View File

@ -66,7 +66,7 @@ void file_list_pop(file_list_t *list, size_t *directory_ptr)
--list->size;
#ifdef HAVE_MENU
if (driver.menu_ctx && driver.menu_ctx->list_delete)
driver.menu_ctx->list_delete(list, list->size);
driver.menu_ctx->list_delete(list, list->size, list->size);
#endif
free(list->list[list->size].path);
free(list->list[list->size].label);
@ -92,7 +92,7 @@ void file_list_free(file_list_t *list)
{
#ifdef HAVE_MENU
if (driver.menu_ctx && driver.menu_ctx->list_delete)
driver.menu_ctx->list_delete(list, list->size);
driver.menu_ctx->list_delete(list, i, list->size);
#endif
free(list->list[i].path);
free(list->list[i].label);

View File

@ -28,7 +28,7 @@ typedef struct menu_ctx_driver
void (*navigation_descend_alphabet)(void *, size_t *);
void (*navigation_ascend_alphabet)(void *, size_t *);
void (*list_insert)(void *, const char *, const char *, size_t);
void (*list_delete)(void *, size_t);
void (*list_delete)(void *, size_t, size_t);
void (*list_clear)(void *);
void (*list_set_selection)(void *);
void (*init_core_info)(void *);

View File

@ -493,9 +493,11 @@ static void rmenu_xui_list_insert(void *data,
XuiListSetText(m_menulist, list_size, buf);
}
static void rmenu_xui_list_delete(void *data, size_t list_size)
static void rmenu_xui_list_delete(void *data, size_t index,
size_t list_size)
{
(void)data;
(void)index;
XuiListDeleteItems(m_menulist, 0, list_size);
}

View File

@ -769,16 +769,17 @@ static void xmb_list_insert(void *data,
node->y = iy;
}
static void xmb_list_delete(void *data, size_t list_size)
static void xmb_list_delete(void *data, size_t index,
size_t list_size)
{
file_list_t *list = (file_list_t*)data;
if (!list)
return;
if (list->list[list_size].userdata)
free(list->list[list_size].userdata);
list->list[list_size].userdata = NULL;
if (list->list[index].userdata)
free(list->list[index].userdata);
list->list[index].userdata = NULL;
}
static void xmb_list_clear(void *data)