Fixed the fallback logic of OS::shell_show_in_file_manager

This commit is contained in:
Daylily-Zeleen 2023-07-06 13:14:08 +08:00
parent cdd2313ba2
commit 9dd9818c88
2 changed files with 7 additions and 5 deletions

View file

@ -295,12 +295,14 @@ Error OS::shell_open(String p_uri) {
}
Error OS::shell_show_in_file_manager(String p_path, bool p_open_folder) {
if (!p_path.begins_with("file://")) {
p_path = String("file://") + p_path;
}
if (!p_path.ends_with("/")) {
p_path = p_path.trim_prefix("file://");
if (!DirAccess::dir_exists_absolute(p_path)) {
p_path = p_path.get_base_dir();
}
p_path = String("file://") + p_path;
return shell_open(p_path);
}
// implement these with the canvas?

View file

@ -657,7 +657,7 @@
Requests the OS to open the file manager, then navigate to the given [param file_or_dir_path] and select the target file or folder.
If [param file_or_dir_path] is a valid directory path, and [param open_folder] is [code]true[/code], the method will open the file manager and enter the target folder without selecting anything.
Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] or [code]user://[/code] path into a system path for use with this method.
[b]Note:[/b] Currently this method is only implemented on Windows. On other platforms, it will fallback to [method shell_open] with a directory path for [param file_or_dir_path].
[b]Note:[/b] Currently this method is only implemented on Windows and macOS. On other platforms, it will fallback to [method shell_open] with a directory path of [param file_or_dir_path] with prefix [code]file://[/code].
</description>
</method>
<method name="unset_environment" qualifiers="const">