Fix regression w/initial folder on file selector (fix #3979)

Regression introduced in 556c621eeb963498915cb01ca912327e629d81b5
This commit is contained in:
David Capello 2023-07-24 16:19:59 -03:00
parent 400456cbec
commit 056073b3f1
2 changed files with 16 additions and 8 deletions

View File

@ -125,11 +125,9 @@ std::string get_initial_path_to_select_filename(const std::string& initialFilena
std::string get_current_dir_for_file_selector()
{
std::string path = Preferences::instance().fileSelector.currentFolder();
// If it's empty or the folder doesn't exist anymore, starts from
// the docs folder by default.
if (path.empty() ||
path == "<empty>" ||
!base::is_directory(path)) {
// "<empty>" is the default value for this property, to start from
// the user docs folder by default.
if (path == "<empty>") {
path = base::get_user_docs_folder();
}
return path;

View File

@ -411,10 +411,20 @@ bool FileSelector::show(
fs->refresh();
// We have to find where the user should begin to browse files
std::string start_folder_path =
base::get_file_path(get_initial_path_to_select_filename(initialPath));
IFileItem* start_folder = fs->getFileItemFromPath(start_folder_path);
std::string start_folder_path;
if (initialPath.empty()) {
start_folder_path = get_initial_path_to_select_filename(initialPath);
}
else {
start_folder_path = base::get_file_path(initialPath);
}
IFileItem* start_folder = fs->getFileItemFromPath(start_folder_path);
if (!start_folder) {
// If the directory doesn't exist anymore, get the default FS item
// (root item, or user folder).
start_folder = fs->getFileItemFromPath(std::string());
}
FILESEL_TRACE("FILESEL: Start folder '%s' (%p)\n", start_folder_path.c_str(), start_folder);
{