summaryrefslogtreecommitdiff
path: root/src/filetreeitem.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-02-05 16:21:41 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-02-05 16:21:41 -0500
commit34b022a2297b869c7be306e3f6bf8e124adaf1a7 (patch)
tree8d77d9b3b34a1436f93f29aa032848e32b92d027 /src/filetreeitem.cpp
parent6f107023498cb00f268f55232e5f16254df9e79b (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.cpp20
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);