(menu) Start passing menu_handle to action_ok callback

This commit is contained in:
twinaphex 2018-04-10 18:39:03 +02:00
parent 6e299065ce
commit d2a1c39f4b
6 changed files with 297 additions and 205 deletions

File diff suppressed because it is too large Load Diff

View File

@ -107,7 +107,11 @@ static int action_select_default(const char *path, const char *label, unsigned t
static int action_select_path_use_directory(const char *path, static int action_select_path_use_directory(const char *path,
const char *label, unsigned type, size_t idx) const char *label, unsigned type, size_t idx)
{ {
return action_ok_path_use_directory(path, label, type, idx, 0 /* unused */); menu_handle_t *menu = NULL;
if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu))
return menu_cbs_exit();
return action_ok_path_use_directory(menu,
path, label, type, idx, 0 /* unused */);
} }
static int action_select_driver_setting(const char *path, const char *label, unsigned type, static int action_select_driver_setting(const char *path, const char *label, unsigned type,

View File

@ -133,21 +133,26 @@ int action_refresh_default(file_list_t *list, file_list_t *menu_list);
int shader_action_parameter_right(unsigned type, const char *label, bool wraparound); int shader_action_parameter_right(unsigned type, const char *label, bool wraparound);
int generic_action_ok_displaylist_push(const char *path, const char *new_path, int generic_action_ok_displaylist_push(void *data,
const char *path, const char *new_path,
const char *label, unsigned type, size_t idx, size_t entry_idx, const char *label, unsigned type, size_t idx, size_t entry_idx,
unsigned action_type); unsigned action_type);
int action_ok_push_generic_list(void *data,
const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx);
int action_ok_path_use_directory(void *data,
const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx);
int action_ok_directory_push(void *data,
const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx);
int generic_action_cheat_toggle(size_t idx, unsigned type, const char *label, int generic_action_cheat_toggle(size_t idx, unsigned type, const char *label,
bool wraparound); bool wraparound);
int action_ok_push_generic_list(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx);
int action_ok_path_use_directory(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx);
int action_ok_directory_push(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx);
int core_setting_right(unsigned type, const char *label, int core_setting_right(unsigned type, const char *label,
bool wraparound); bool wraparound);

View File

@ -1706,7 +1706,8 @@ bool menu_driver_iterate(menu_ctx_iterate_t *iterate)
menu_entries_flush_stack(NULL, MENU_SETTINGS); menu_entries_flush_stack(NULL, MENU_SETTINGS);
menu_display_set_msg_force(true); menu_display_set_msg_force(true);
generic_action_ok_displaylist_push("", NULL, generic_action_ok_displaylist_push(menu_driver_data,
"", NULL,
"", 0, 0, 0, ACTION_OK_DL_CONTENT_SETTINGS); "", 0, 0, 0, ACTION_OK_DL_CONTENT_SETTINGS);
if (menu_driver_pending_quit) if (menu_driver_pending_quit)

View File

@ -107,7 +107,8 @@ typedef struct menu_file_list_cbs
size_t idx); size_t idx);
int (*action_get_title)(const char *path, const char *label, int (*action_get_title)(const char *path, const char *label,
unsigned type, char *s, size_t len); unsigned type, char *s, size_t len);
int (*action_ok)(const char *path, const char *label, unsigned type, int (*action_ok)(void *data,
const char *path, const char *label, unsigned type,
size_t idx, size_t entry_idx); size_t idx, size_t entry_idx);
int (*action_cancel)(const char *path, const char *label, unsigned type, int (*action_cancel)(const char *path, const char *label, unsigned type,
size_t idx); size_t idx);

View File

@ -448,9 +448,15 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action)
break; break;
case MENU_ACTION_OK: case MENU_ACTION_OK:
if (cbs && cbs->action_ok) {
ret = cbs->action_ok(entry->path, menu_handle_t *menu = NULL;
entry->label, entry->type, i, entry->entry_idx);
menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu);
if (cbs && cbs->action_ok)
ret = cbs->action_ok(menu, entry->path,
entry->label, entry->type, i, entry->entry_idx);
}
break; break;
case MENU_ACTION_START: case MENU_ACTION_START:
if (cbs && cbs->action_start) if (cbs && cbs->action_start)