Skip to content

Commit

Permalink
Merge pull request #76428 from bruvzg/finder_open
Browse files Browse the repository at this point in the history
[macOS] Implement OS::shell_show_in_file_manager()
  • Loading branch information
akien-mga committed Apr 25, 2023
2 parents 0093660 + a97225c commit 5e383f3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
1 change: 1 addition & 0 deletions platform/macos/os_macos.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ class OS_MacOS : public OS_Unix {
virtual String get_system_dir(SystemDir p_dir, bool p_shared_storage = true) const override;

virtual Error shell_open(String p_uri) override;
virtual Error shell_show_in_file_manager(String p_path, bool p_open_folder) override;

virtual String get_locale() const override;

Expand Down
21 changes: 21 additions & 0 deletions platform/macos/os_macos.mm
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,27 @@
return ret;
}

Error OS_MacOS::shell_show_in_file_manager(String p_path, bool p_open_folder) {
bool open_folder = false;
if (DirAccess::dir_exists_absolute(p_path) && p_open_folder) {
open_folder = true;
}

if (!p_path.begins_with("file://")) {
p_path = String("file://") + p_path;
}

NSString *string = [NSString stringWithUTF8String:p_path.utf8().get_data()];
NSURL *uri = [[NSURL alloc] initWithString:[string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]]];

if (open_folder) {
[[NSWorkspace sharedWorkspace] openURL:uri];
} else {
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ uri ]];
}
return OK;
}

Error OS_MacOS::shell_open(String p_uri) {
NSString *string = [NSString stringWithUTF8String:p_uri.utf8().get_data()];
NSURL *uri = [[NSURL alloc] initWithString:string];
Expand Down

0 comments on commit 5e383f3

Please sign in to comment.