diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-05 16:21:41 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-05 16:21:41 -0500 |
| commit | 34b022a2297b869c7be306e3f6bf8e124adaf1a7 (patch) | |
| tree | 8d77d9b3b34a1436f93f29aa032848e32b92d027 /src/filetreeitem.cpp | |
| parent | 6f107023498cb00f268f55232e5f16254df9e79b (diff) | |
fixed warning when comparing empty strings
filter in data tab
fixed some bad iterators when removing rows
fixed empty directories not being marked as such when refreshing
always sort directories first even when reversing the sort order
fixed children not being sorted
fixed errors about file sizes for directories
remember state of checkboxes in data tab
Diffstat (limited to 'src/filetreeitem.cpp')
| -rw-r--r-- | src/filetreeitem.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/filetreeitem.cpp b/src/filetreeitem.cpp index bb07568a..3332fb7d 100644 --- a/src/filetreeitem.cpp +++ b/src/filetreeitem.cpp @@ -10,6 +10,8 @@ using namespace MOBase; using namespace MOShared; namespace fs = std::filesystem; +constexpr bool AlwaysSortDirectoriesFirst = true; + const QString& directoryFileType() { static QString name; @@ -179,9 +181,17 @@ void FileTreeItem::sort(int column, Qt::SortOrder order) int r = 0; if (a->isDirectory() && !b->isDirectory()) { - r = -1; + if constexpr (AlwaysSortDirectoriesFirst) { + return true; + } else { + r = -1; + } } else if (!a->isDirectory() && b->isDirectory()) { - r = 1; + if constexpr (AlwaysSortDirectoriesFirst) { + return false; + } else { + r = 1; + } } else { r = FileTreeItem::Sorter::compare(column, a.get(), b.get()); } @@ -192,6 +202,10 @@ void FileTreeItem::sort(int column, Qt::SortOrder order) return (r > 0); } }); + + for (auto& child : m_children) { + child->sort(column, order); + } } QString FileTreeItem::virtualPath() const @@ -232,7 +246,7 @@ QFont FileTreeItem::font() const std::optional<uint64_t> FileTreeItem::fileSize() const { - if (m_fileSize.empty()) { + if (m_fileSize.empty() && !m_isDirectory) { std::error_code ec; const auto size = fs::file_size(fs::path(m_wsRealPath), ec); |
