Merge pull request #42381 from timothyqiu/osx-hidden
Hide special folders in FileDialog for macOS
This commit is contained in:
commit
aed16c8f84
4 changed files with 18 additions and 1 deletions
|
@ -152,7 +152,7 @@ String DirAccessUnix::get_next() {
|
|||
_cisdir = (entry->d_type == DT_DIR);
|
||||
}
|
||||
|
||||
_cishidden = (fname != "." && fname != ".." && fname.begins_with("."));
|
||||
_cishidden = is_hidden(fname);
|
||||
|
||||
return fname;
|
||||
}
|
||||
|
@ -400,6 +400,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 = nullptr;
|
||||
_cisdir = false;
|
||||
|
|
|
@ -51,6 +51,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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -68,4 +68,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
|
||||
|
|
Loading…
Reference in a new issue