diff --git a/src/app/file_system.cpp b/src/app/file_system.cpp index 16a965df6..5a4661aa4 100644 --- a/src/app/file_system.cpp +++ b/src/app/file_system.cpp @@ -84,6 +84,7 @@ public: bool isFolder() const; bool isBrowsable() const; + bool isHidden() const; std::string getKeyName() const; std::string getFileName() const; @@ -313,6 +314,17 @@ bool FileItem::isBrowsable() const return is_folder; } +bool FileItem::isHidden() const +{ + ASSERT(this->displayname != NOTINITIALIZED); + +#ifdef _WIN32 + return false; +#else + return this->displayname[0] == '.'; +#endif +} + std::string FileItem::getKeyName() const { ASSERT(this->keyname != NOTINITIALIZED); diff --git a/src/app/file_system.h b/src/app/file_system.h index dc10cc3ca..8f60748cc 100644 --- a/src/app/file_system.h +++ b/src/app/file_system.h @@ -68,6 +68,7 @@ namespace app { virtual bool isFolder() const = 0; virtual bool isBrowsable() const = 0; + virtual bool isHidden() const = 0; virtual std::string getKeyName() const = 0; virtual std::string getFileName() const = 0; diff --git a/src/app/ui/file_list.cpp b/src/app/ui/file_list.cpp index 0c3b0f7b8..0b68caac5 100644 --- a/src/app/ui/file_list.cpp +++ b/src/app/ui/file_list.cpp @@ -497,7 +497,9 @@ void FileList::regenerateList() it=m_list.begin(); it!=m_list.end(); ) { IFileItem* fileitem = *it; - if (!fileitem->isFolder() && + if (fileitem->isHidden()) + it = m_list.erase(it); + else if (!fileitem->isFolder() && !fileitem->hasExtension(m_exts.c_str())) { it = m_list.erase(it); }