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; --list->size;
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (driver.menu_ctx && driver.menu_ctx->list_delete) 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 #endif
free(list->list[list->size].path); free(list->list[list->size].path);
free(list->list[list->size].label); free(list->list[list->size].label);
@ -92,7 +92,7 @@ void file_list_free(file_list_t *list)
{ {
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (driver.menu_ctx && driver.menu_ctx->list_delete) 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 #endif
free(list->list[i].path); free(list->list[i].path);
free(list->list[i].label); 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_descend_alphabet)(void *, size_t *);
void (*navigation_ascend_alphabet)(void *, size_t *); void (*navigation_ascend_alphabet)(void *, size_t *);
void (*list_insert)(void *, const char *, const char *, 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_clear)(void *);
void (*list_set_selection)(void *); void (*list_set_selection)(void *);
void (*init_core_info)(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); 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)data;
(void)index;
XuiListDeleteItems(m_menulist, 0, list_size); XuiListDeleteItems(m_menulist, 0, list_size);
} }

View File

@ -769,16 +769,17 @@ static void xmb_list_insert(void *data,
node->y = iy; 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; file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
if (list->list[list_size].userdata) if (list->list[index].userdata)
free(list->list[list_size].userdata); free(list->list[index].userdata);
list->list[list_size].userdata = NULL; list->list[index].userdata = NULL;
} }
static void xmb_list_clear(void *data) static void xmb_list_clear(void *data)