Hides special folders in FileDialog for macOS

(cherry picked from commit 1998f78679)
This commit is contained in:
Haoyu Qiu 2020-09-28 14:06:36 +08:00 committed by Rémi Verschelde
parent 0d8cbd5d8c
commit 7840a550b5
No known key found for this signature in database
GPG key ID: C3336907360768E1
4 changed files with 18 additions and 1 deletions

View file

@ -154,7 +154,7 @@ String DirAccessUnix::get_next() {
_cisdir = (entry->d_type == DT_DIR);
}
_cishidden = (fname != "." && fname != ".." && fname.begins_with("."));
_cishidden = is_hidden(fname);
return fname;
}
@ -408,6 +408,10 @@ String DirAccessUnix::get_filesystem_type() const {
return ""; //TODO this should be implemented
}
bool DirAccessUnix::is_hidden(const String &p_name) {
return p_name != "." && p_name != ".." && p_name.begins_with(".");
}
DirAccessUnix::DirAccessUnix() {
dir_stream = 0;

View file

@ -52,6 +52,7 @@ class DirAccessUnix : public DirAccess {
protected:
virtual String fix_unicode_name(const char *p_name) const { return String::utf8(p_name); }
virtual bool is_hidden(const String &p_name);
public:
virtual Error list_dir_begin(); ///< This starts dir listing

View file

@ -47,6 +47,8 @@ protected:
virtual int get_drive_count();
virtual String get_drive(int p_drive);
virtual bool is_hidden(const String &p_name);
};
#endif //UNIX ENABLED

View file

@ -69,4 +69,14 @@ String DirAccessOSX::get_drive(int p_drive) {
return volname;
}
bool DirAccessOSX::is_hidden(const String &p_name) {
String f = get_current_dir().plus_file(p_name);
NSURL *url = [NSURL fileURLWithPath:@(f.utf8().get_data())];
NSNumber *hidden = nil;
if (![url getResourceValue:&hidden forKey:NSURLIsHiddenKey error:nil]) {
return DirAccessUnix::is_hidden(p_name);
}
return [hidden boolValue];
}
#endif //posix_enabled