diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 9c00cb2075..d23f313b1e 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -1017,7 +1017,7 @@ static void mui_render_menu_list( menu_entry_init(&entry); menu_entry_get(&entry, 0, (unsigned)i, NULL, true); - menu_entry_get_value((unsigned)i, NULL, entry_value, sizeof(entry_value)); + menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); menu_entry_get_rich_label(&entry, rich_label, sizeof(rich_label)); entry_selected = selection == i; diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index f4906abda7..a6779dc8ba 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -590,7 +590,7 @@ static void rgui_render(void *data, bool is_idle) menu_entry_init(&entry); menu_entry_get(&entry, 0, (unsigned)i, NULL, true); - menu_entry_get_value((unsigned)i, NULL, entry_value, sizeof(entry_value)); + menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); menu_entry_get_rich_label(&entry, entry_path, sizeof(entry_path)); ticker.s = entry_title_buf; diff --git a/menu/drivers/xui.cpp b/menu/drivers/xui.cpp index ff03d20201..ccefb7dd5e 100644 --- a/menu/drivers/xui.cpp +++ b/menu/drivers/xui.cpp @@ -590,17 +590,23 @@ static void xui_render(void *data, bool is_idle) end = menu_entries_get_end(); for (i = 0; i < end; i++) { + menu_entry_t entry; char entry_path[PATH_MAX_LENGTH] = {0}; char entry_value[PATH_MAX_LENGTH] = {0}; wchar_t msg_right[PATH_MAX_LENGTH] = {0}; wchar_t msg_left[PATH_MAX_LENGTH] = {0}; - menu_entry_get_value(i, NULL, entry_value, sizeof(entry_value)); + menu_entry_init(&entry); + menu_entry_get(&entry, 0, i, NULL, true); + + menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); menu_entry_get_path(i, entry_path, sizeof(entry_path)); mbstowcs(msg_left, entry_path, sizeof(msg_left) / sizeof(wchar_t)); mbstowcs(msg_right, entry_value, sizeof(msg_right) / sizeof(wchar_t)); xui_set_list_text(i, msg_left, msg_right); + + menu_entry_free(&entry); } selection = menu_navigation_get_selection(); diff --git a/menu/drivers/zarch.c b/menu/drivers/zarch.c index 93b10d9cf1..82cd00b714 100644 --- a/menu/drivers/zarch.c +++ b/menu/drivers/zarch.c @@ -523,7 +523,7 @@ static int zarch_zui_render_lay_root_recent( menu_entry_init(&entry); menu_entry_get(&entry, 0, i, NULL, true); menu_entry_get_rich_label(&entry, rich_label, sizeof(rich_label)); - menu_entry_get_value(i, NULL, entry_value,sizeof(entry_value)); + menu_entry_get_value(&entry, entry_value,sizeof(entry_value)); if (zarch_zui_list_item( video_info, diff --git a/menu/widgets/menu_entry.c b/menu/widgets/menu_entry.c index 8de278f053..7c0be8fb91 100644 --- a/menu/widgets/menu_entry.c +++ b/menu/widgets/menu_entry.c @@ -272,14 +272,11 @@ void menu_entry_reset(uint32_t i) menu_entry_action(&entry, i, MENU_ACTION_START); } -void menu_entry_get_value(uint32_t i, void *data, char *s, size_t len) +void menu_entry_get_value(menu_entry_t *entry, char *s, size_t len) { - menu_entry_t entry; - file_list_t *list = (file_list_t*)data; - - menu_entry_init(&entry); - menu_entry_get(&entry, 0, i, list, true); - strlcpy(s, entry.value, len); + if (!entry) + return; + strlcpy(s, entry->value, len); } void menu_entry_set_value(uint32_t i, const char *s) diff --git a/menu/widgets/menu_entry.h b/menu/widgets/menu_entry.h index 95d9e834a1..22cdc581ed 100644 --- a/menu/widgets/menu_entry.h +++ b/menu/widgets/menu_entry.h @@ -97,7 +97,7 @@ void menu_entry_get_rich_label(menu_entry_t *entry, char *s, size_t len); bool menu_entry_get_sublabel(uint32_t i, char *s, size_t len); -void menu_entry_get_value(uint32_t i, void *data, char *s, size_t len); +void menu_entry_get_value(menu_entry_t *entry, char *s, size_t len); void menu_entry_set_value(uint32_t i, const char *s); diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index 8378ccfc14..8cfc6cc780 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -111,6 +111,7 @@ static void RunActionSheet(const char* title, const struct string_list* items, - (UITableViewCell*)cellForTableView:(UITableView*)tableView { + menu_entry_t entry; char buffer[PATH_MAX_LENGTH]; char label[PATH_MAX_LENGTH]; static NSString* const cell_id = @"text"; @@ -122,8 +123,10 @@ static void RunActionSheet(const char* title, const struct string_list* items, result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cell_id]; + menu_entry_init(&entry); + menu_entry_get(&entry, 0, (unsigned)self.i, NULL, true); menu_entry_get_path(self.i, label, sizeof(label)); - menu_entry_get_value(self.i, NULL, buffer, sizeof(buffer)); + menu_entry_get_value(&entry, buffer, sizeof(buffer)); result.textLabel.text = BOXSTRING(label); @@ -132,6 +135,7 @@ static void RunActionSheet(const char* title, const struct string_list* items, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), sizeof(buffer)); result.detailTextLabel.text = BOXSTRING(buffer); + menu_entry_free(&entry); return result; } @@ -408,12 +412,15 @@ replacementString:(NSString *)string - (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller { + menu_entry_t entry; char buffer[PATH_MAX_LENGTH]; char label[PATH_MAX_LENGTH]; UIAlertView *alertView = NULL; UITextField *field = NULL; NSString *desc = NULL; + menu_entry_init(&entry); + menu_entry_get(&entry, 0, (unsigned)self.i, NULL, true); menu_entry_get_path(self.i, label, sizeof(label)); desc = BOXSTRING(label); @@ -429,7 +436,7 @@ replacementString:(NSString *)string field = [alertView textFieldAtIndex:0]; field.delegate = self.formatter; - menu_entry_get_value(self.i, NULL, buffer, sizeof(buffer)); + menu_entry_get_value(&entry, buffer, sizeof(buffer)); if (string_is_empty(buffer)) strlcpy(buffer, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), @@ -437,6 +444,8 @@ replacementString:(NSString *)string field.placeholder = BOXSTRING(buffer); + menu_entry_free(&entry); + [alertView show]; }