From 569014c5d2d8b85d589d652610920a66546a1806 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Tue, 31 Dec 2019 12:32:32 +0000 Subject: [PATCH] (Filebrowser) Fix file selection issues when starting from (or navigating to) the top level directory --- frontend/drivers/platform_ctr.c | 2 +- frontend/drivers/platform_darwin.m | 2 +- frontend/drivers/platform_gx.c | 2 +- frontend/drivers/platform_orbis.c | 2 +- frontend/drivers/platform_ps2.c | 2 +- frontend/drivers/platform_ps3.c | 2 +- frontend/drivers/platform_psp.c | 2 +- frontend/drivers/platform_switch.c | 2 +- frontend/drivers/platform_unix.c | 2 +- frontend/drivers/platform_uwp.c | 2 +- frontend/drivers/platform_wiiu.c | 2 +- frontend/drivers/platform_win32.c | 2 +- frontend/drivers/platform_xdk.c | 2 +- menu/cbs/menu_cbs_ok.c | 11 ++++++++--- menu/menu_displaylist.c | 9 ++++++--- 15 files changed, 27 insertions(+), 19 deletions(-) diff --git a/frontend/drivers/platform_ctr.c b/frontend/drivers/platform_ctr.c index cceb664d6a..f4de367e3a 100644 --- a/frontend/drivers/platform_ctr.c +++ b/frontend/drivers/platform_ctr.c @@ -483,7 +483,7 @@ static int frontend_ctr_parse_drive_list(void* data, bool load_content) file_list_t* list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR - : MSG_UNKNOWN; + : MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; if (!list) return -1; diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 23c7bea44d..05529d2588 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -734,7 +734,7 @@ static int frontend_darwin_parse_drive_list(void *data, bool load_content) CFBundleRef bundle = CFBundleGetMainBundle(); enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; bundle_url = CFBundleCopyBundleURL(bundle); bundle_path = CFURLCopyPath(bundle_url); diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index cf05e1d282..f614adb7ad 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -481,7 +481,7 @@ static int frontend_gx_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; #ifdef HW_RVL menu_entries_append_enum(list, "sd:/", diff --git a/frontend/drivers/platform_orbis.c b/frontend/drivers/platform_orbis.c index dc7c5ea0ca..f246688607 100644 --- a/frontend/drivers/platform_orbis.c +++ b/frontend/drivers/platform_orbis.c @@ -329,7 +329,7 @@ static int frontend_orbis_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; menu_entries_append_enum(list, "host0:app", diff --git a/frontend/drivers/platform_ps2.c b/frontend/drivers/platform_ps2.c index a090c0622c..e1e56dfa60 100644 --- a/frontend/drivers/platform_ps2.c +++ b/frontend/drivers/platform_ps2.c @@ -341,7 +341,7 @@ static int frontend_ps2_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; menu_entries_append_enum(list, rootDevicePath(BOOT_DEVICE_MC0), diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index 343024c51b..3003d7c9b9 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -528,7 +528,7 @@ static int frontend_ps3_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; menu_entries_append_enum(list, "/app_home/", diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 66af6017b1..a092f8f6b2 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -449,7 +449,7 @@ static int frontend_psp_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; #ifdef VITA menu_entries_append_enum(list, diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index 29e24c717d..92685e5aa2 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -801,7 +801,7 @@ static int frontend_switch_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t *)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR - : MSG_UNKNOWN; + : MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; if (!list) return -1; diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c index ff21203013..253af4fa2a 100644 --- a/frontend/drivers/platform_unix.c +++ b/frontend/drivers/platform_unix.c @@ -1923,7 +1923,7 @@ static int frontend_unix_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; #ifdef ANDROID if (!string_is_empty(internal_storage_path)) diff --git a/frontend/drivers/platform_uwp.c b/frontend/drivers/platform_uwp.c index 9bc96514f4..8e3a15f9f7 100644 --- a/frontend/drivers/platform_uwp.c +++ b/frontend/drivers/platform_uwp.c @@ -277,7 +277,7 @@ static int frontend_uwp_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; char drive[] = " :\\"; char *home_dir = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); bool have_any_drives = false; diff --git a/frontend/drivers/platform_wiiu.c b/frontend/drivers/platform_wiiu.c index 880d272a79..8cf500ec5f 100644 --- a/frontend/drivers/platform_wiiu.c +++ b/frontend/drivers/platform_wiiu.c @@ -173,7 +173,7 @@ static int frontend_wiiu_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t *)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; if (!list) return -1; diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c index 4d42c44834..d57133d399 100644 --- a/frontend/drivers/platform_win32.c +++ b/frontend/drivers/platform_win32.c @@ -475,7 +475,7 @@ static int frontend_win32_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; size_t i = 0; unsigned drives = GetLogicalDrives(); char drive[] = " :\\"; diff --git a/frontend/drivers/platform_xdk.c b/frontend/drivers/platform_xdk.c index 20777cdfa3..7df77c820d 100644 --- a/frontend/drivers/platform_xdk.c +++ b/frontend/drivers/platform_xdk.c @@ -368,7 +368,7 @@ static int frontend_xdk_parse_drive_list(void *data, bool load_content) file_list_t *list = (file_list_t*)data; enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : - MSG_UNKNOWN; + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY; #if defined(_XBOX1) menu_entries_append_enum(list, diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 68b2077f5d..118f056a68 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -900,9 +900,14 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_DIRECTORY_PUSH: - if (path && menu_path) - fill_pathname_join(tmp, - menu_path, path, sizeof(tmp)); + if (!string_is_empty(path)) + { + if (!string_is_empty(menu_path)) + fill_pathname_join( + tmp, menu_path, path, sizeof(tmp)); + else + strlcpy(tmp, path, sizeof(tmp)); + } info.type = type; info.directory_ptr = idx; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 30a8dc5bce..8dfe199a17 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2393,7 +2393,7 @@ static unsigned menu_displaylist_parse_playlists( count++; else if (menu_entries_append_enum(info->list, "/", "", - MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0)) + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, FILE_TYPE_DIRECTORY, 0, 0)) count++; return count; } @@ -2540,7 +2540,7 @@ static unsigned menu_displaylist_parse_cores( { if (frontend_driver_parse_drive_list(info->list, true) != 0) menu_entries_append_enum(info->list, "/", "", - MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, FILE_TYPE_DIRECTORY, 0, 0); items_found++; return items_found; } @@ -10828,7 +10828,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, { if (frontend_driver_parse_drive_list(info->list, load_content) != 0) if (menu_entries_append_enum(info->list, "/", "", - MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0)) + load_content ? + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : + MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY, + FILE_TYPE_DIRECTORY, 0, 0)) count++; } else