don't sort items when they're not expanded

This commit is contained in:
isanae
2020-02-08 21:38:01 -05:00
parent d0c16e60d7
commit 3a80685189
4 changed files with 12 additions and 10 deletions
+6 -4
View File
@@ -178,12 +178,14 @@ public:
void FileTreeItem::sort()
{
m_model->sortItem(*this);
if (!m_children.empty()) {
m_model->sortItem(*this, true);
}
}
void FileTreeItem::sort(int column, Qt::SortOrder order)
void FileTreeItem::sort(int column, Qt::SortOrder order, bool force)
{
if (!m_expanded) {
if (!force && !m_expanded) {
m_sortingStale = true;
return;
}
@@ -220,7 +222,7 @@ void FileTreeItem::sort(int column, Qt::SortOrder order)
});
for (auto& child : m_children) {
child->sort(column, order);
child->sort(column, order, force);
}
}
+1 -1
View File
@@ -92,7 +92,7 @@ public:
return -1;
}
void sort(int column, Qt::SortOrder order);
void sort(int column, Qt::SortOrder order, bool force);
FileTreeItem* parent()
{
+4 -4
View File
@@ -379,7 +379,7 @@ Qt::ItemFlags FileTreeModel::flags(const QModelIndex& index) const
return f;
}
void FileTreeModel::sortItem(FileTreeItem& item)
void FileTreeModel::sortItem(FileTreeItem& item, bool force)
{
emit layoutAboutToBeChanged();
@@ -394,7 +394,7 @@ void FileTreeModel::sortItem(FileTreeItem& item)
oldItems.push_back({itemFromIndex(index), index.column()});
}
item.sort(m_sort.column, m_sort.order);
item.sort(m_sort.column, m_sort.order, force);
QModelIndexList newList;
newList.reserve(itemCount);
@@ -414,7 +414,7 @@ void FileTreeModel::sort(int column, Qt::SortOrder order)
m_sort.column = column;
m_sort.order = order;
sortItem(*m_root);
sortItem(*m_root, false);
}
FileTreeItem* FileTreeModel::itemFromIndex(const QModelIndex& index) const
@@ -487,7 +487,7 @@ void FileTreeModel::update(
}
if (added) {
parentItem.sort(m_sort.column, m_sort.order);
parentItem.sort(m_sort.column, m_sort.order, true);
}
}
+1 -1
View File
@@ -76,7 +76,7 @@ public:
void sort(int column, Qt::SortOrder order=Qt::AscendingOrder) override;
FileTreeItem* itemFromIndex(const QModelIndex& index) const;
void sortItem(FileTreeItem& item);
void sortItem(FileTreeItem& item, bool force);
private:
class Range;