Chromium Code Reviews| Index: ui/base/dialogs/select_file_dialog_win.cc |
| =================================================================== |
| --- ui/base/dialogs/select_file_dialog_win.cc (revision 151539) |
| +++ ui/base/dialogs/select_file_dialog_win.cc (working copy) |
| @@ -75,6 +75,13 @@ |
| } |
| } |
| +// Distinguish directories from regular files. |
| +bool IsDirectory(const FilePath& path) { |
| + base::PlatformFileInfo file_info; |
| + return file_util::GetFileInfo(path, &file_info) ? |
| + file_info.is_directory : file_util::EndsWithSeparator(path); |
|
Ben Goodger (Google)
2012/08/14 23:06:54
4-space indent
Tom Sepez
2012/08/14 23:10:43
Done.
|
| +} |
| + |
| // Get the file type description from the registry. This will be "Text Document" |
| // for .txt files, "JPEG Image" for .jpg files, etc. If the registry doesn't |
| // have an entry for the file type, we return false, true if the description was |
| @@ -286,8 +293,14 @@ |
| // Set up the initial directory for the dialog. |
| std::wstring directory; |
| - if (!suggested_name.empty()) |
| - directory = suggested_path.DirName().value(); |
| + if (!suggested_name.empty()) { |
| + if (IsDirectory(suggested_path)) { |
| + directory = suggested_path.value(); |
| + file_part.clear(); |
| + } else { |
| + directory = suggested_path.DirName().value(); |
| + } |
| + } |
| save_as.lpstrInitialDir = directory.c_str(); |
| save_as.lpstrTitle = NULL; |
| @@ -715,13 +728,7 @@ |
| FilePath dir; |
| // Use lpstrInitialDir to specify the initial directory |
| if (!path->empty()) { |
| - bool is_dir; |
| - base::PlatformFileInfo file_info; |
| - if (file_util::GetFileInfo(*path, &file_info)) |
| - is_dir = file_info.is_directory; |
| - else |
| - is_dir = file_util::EndsWithSeparator(*path); |
| - if (is_dir) { |
| + if (IsDirectory(*path)) { |
| ofn.lpstrInitialDir = path->value().c_str(); |
| } else { |
| dir = path->DirName(); |