Fix 'Use this directory' for directory settings
This commit is contained in:
parent
5cefbbfc57
commit
60eb15bf0b
|
@ -227,6 +227,16 @@ int generic_action_ok_displaylist_push(const char *path,
|
||||||
info_label = label;
|
info_label = label;
|
||||||
dl_type = DISPLAYLIST_GENERIC;
|
dl_type = DISPLAYLIST_GENERIC;
|
||||||
break;
|
break;
|
||||||
|
case ACTION_OK_DL_FILE_BROWSER_SELECT_DIR:
|
||||||
|
if (path)
|
||||||
|
strlcpy(menu->deferred_path, path,
|
||||||
|
sizeof(menu->deferred_path));
|
||||||
|
|
||||||
|
info.type = type;
|
||||||
|
info.directory_ptr = idx;
|
||||||
|
info_label = label;
|
||||||
|
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_DIR;
|
||||||
|
break;
|
||||||
case ACTION_OK_DL_PUSH_DEFAULT:
|
case ACTION_OK_DL_PUSH_DEFAULT:
|
||||||
info.type = type;
|
info.type = type;
|
||||||
info.directory_ptr = idx;
|
info.directory_ptr = idx;
|
||||||
|
@ -267,14 +277,14 @@ int generic_action_ok_displaylist_push(const char *path,
|
||||||
info.directory_ptr = idx;
|
info.directory_ptr = idx;
|
||||||
info_path = global->record.config_dir;
|
info_path = global->record.config_dir;
|
||||||
info_label = label;
|
info_label = label;
|
||||||
dl_type = DISPLAYLIST_GENERIC;
|
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE;
|
||||||
break;
|
break;
|
||||||
case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST:
|
case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST:
|
||||||
info.type = type;
|
info.type = type;
|
||||||
info.directory_ptr = idx;
|
info.directory_ptr = idx;
|
||||||
info_path = settings->directory.menu_content;
|
info_path = settings->directory.menu_content;
|
||||||
info_label = label;
|
info_label = label;
|
||||||
dl_type = DISPLAYLIST_GENERIC;
|
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE;
|
||||||
break;
|
break;
|
||||||
case ACTION_OK_DL_PLAYLIST_COLLECTION:
|
case ACTION_OK_DL_PLAYLIST_COLLECTION:
|
||||||
info.type = type;
|
info.type = type;
|
||||||
|
@ -375,7 +385,7 @@ int generic_action_ok_displaylist_push(const char *path,
|
||||||
info.directory_ptr = idx;
|
info.directory_ptr = idx;
|
||||||
info_path = action_path;
|
info_path = action_path;
|
||||||
info_label = menu_label;
|
info_label = menu_label;
|
||||||
dl_type = DISPLAYLIST_GENERIC;
|
dl_type = DISPLAYLIST_GENERIC;
|
||||||
break;
|
break;
|
||||||
case ACTION_OK_DL_DATABASE_MANAGER_LIST:
|
case ACTION_OK_DL_DATABASE_MANAGER_LIST:
|
||||||
fill_pathname_join(tmp,
|
fill_pathname_join(tmp,
|
||||||
|
@ -2338,6 +2348,7 @@ static int action_ok_shader_apply_changes(const char *path,
|
||||||
static int action_ok_lookup_setting(const char *path,
|
static int action_ok_lookup_setting(const char *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)
|
||||||
{
|
{
|
||||||
|
menu_displaylist_reset_filebrowser();
|
||||||
return menu_setting_set(type, label, MENU_ACTION_OK, false);
|
return menu_setting_set(type, label, MENU_ACTION_OK, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2663,6 +2674,13 @@ int action_ok_push_generic_list(const char *path,
|
||||||
entry_idx, ACTION_OK_DL_GENERIC);
|
entry_idx, ACTION_OK_DL_GENERIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int action_ok_push_filebrowser_list_dir_select(const char *path,
|
||||||
|
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||||
|
{
|
||||||
|
return generic_action_ok_displaylist_push(path, label, type, idx,
|
||||||
|
entry_idx, ACTION_OK_DL_FILE_BROWSER_SELECT_DIR);
|
||||||
|
}
|
||||||
|
|
||||||
static int action_ok_push_default(const char *path,
|
static int action_ok_push_default(const char *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)
|
||||||
{
|
{
|
||||||
|
@ -2997,7 +3015,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||||
|
|
||||||
if (menu_setting_get_browser_selection_type(cbs->setting) == ST_DIR)
|
if (menu_setting_get_browser_selection_type(cbs->setting) == ST_DIR)
|
||||||
{
|
{
|
||||||
BIND_ACTION_OK(cbs, action_ok_push_generic_list);
|
BIND_ACTION_OK(cbs, action_ok_push_filebrowser_list_dir_select);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ enum
|
||||||
ACTION_OK_DL_SHADER_PRESET,
|
ACTION_OK_DL_SHADER_PRESET,
|
||||||
ACTION_OK_DL_GENERIC,
|
ACTION_OK_DL_GENERIC,
|
||||||
ACTION_OK_DL_PUSH_DEFAULT,
|
ACTION_OK_DL_PUSH_DEFAULT,
|
||||||
|
ACTION_OK_DL_FILE_BROWSER_SELECT_DIR,
|
||||||
ACTION_OK_DL_DOWNLOADS_DIR,
|
ACTION_OK_DL_DOWNLOADS_DIR,
|
||||||
ACTION_OK_DL_INPUT_SETTINGS_LIST,
|
ACTION_OK_DL_INPUT_SETTINGS_LIST,
|
||||||
ACTION_OK_DL_DRIVER_SETTINGS_LIST,
|
ACTION_OK_DL_DRIVER_SETTINGS_LIST,
|
||||||
|
|
|
@ -3235,8 +3235,7 @@ static int menu_displaylist_parse_generic(
|
||||||
}
|
}
|
||||||
|
|
||||||
path_is_compressed = path_is_compressed_file(info->path);
|
path_is_compressed = path_is_compressed_file(info->path);
|
||||||
push_dir =
|
push_dir = BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR);
|
||||||
(menu_setting_get_browser_selection_type(info->setting) == ST_DIR);
|
|
||||||
filter_ext =
|
filter_ext =
|
||||||
settings->menu.navigation.browser.filter.supported_extensions_enable;
|
settings->menu.navigation.browser.filter.supported_extensions_enable;
|
||||||
|
|
||||||
|
@ -3708,6 +3707,11 @@ static bool menu_displaylist_push(menu_displaylist_ctx_entry_t *entry)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void menu_displaylist_reset_filebrowser(void)
|
||||||
|
{
|
||||||
|
filebrowser_types = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
@ -3840,10 +3844,14 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case DISPLAYLIST_FILE_BROWSER_SELECT_DIR:
|
case DISPLAYLIST_FILE_BROWSER_SELECT_DIR:
|
||||||
filebrowser_types = FILEBROWSER_SELECT_DIR;
|
filebrowser_types = 0;
|
||||||
|
BIT32_SET(filebrowser_types, FILEBROWSER_SELECT_DIR);
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_FILE_BROWSER_SELECT_FILE:
|
case DISPLAYLIST_FILE_BROWSER_SELECT_FILE:
|
||||||
filebrowser_types = FILEBROWSER_SELECT_FILE;
|
filebrowser_types = 0;
|
||||||
|
BIT32_SET(filebrowser_types, FILEBROWSER_SELECT_FILE);
|
||||||
|
break;
|
||||||
|
case DISPLAYLIST_GENERIC:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -3857,6 +3865,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||||
menu_entries_add_enum(info->list, info->path,
|
menu_entries_add_enum(info->list, info->path,
|
||||||
info->label, MSG_UNKNOWN, info->type, info->directory_ptr, 0);
|
info->label, MSG_UNKNOWN, info->type, info->directory_ptr, 0);
|
||||||
break;
|
break;
|
||||||
|
case DISPLAYLIST_FILE_BROWSER_SELECT_DIR:
|
||||||
|
case DISPLAYLIST_FILE_BROWSER_SELECT_FILE:
|
||||||
case DISPLAYLIST_GENERIC:
|
case DISPLAYLIST_GENERIC:
|
||||||
{
|
{
|
||||||
menu_ctx_list_t list_info;
|
menu_ctx_list_t list_info;
|
||||||
|
|
|
@ -187,6 +187,8 @@ typedef struct menu_displaylist_ctx_entry
|
||||||
file_list_t *list;
|
file_list_t *list;
|
||||||
} menu_displaylist_ctx_entry_t;
|
} menu_displaylist_ctx_entry_t;
|
||||||
|
|
||||||
|
void menu_displaylist_reset_filebrowser(void);
|
||||||
|
|
||||||
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data);
|
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data);
|
||||||
|
|
||||||
RETRO_END_DECLS
|
RETRO_END_DECLS
|
||||||
|
|
Loading…
Reference in New Issue