diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-08 21:38:01 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-08 21:38:01 -0500 |
| commit | 3a80685189967fbf4cfa002ac2b8a4fa421306ca (patch) | |
| tree | 01d38125329508f5628f9221f797e303180c8fc3 /src | |
| parent | d0c16e60d734fe2f72c387552559bf125554fb2d (diff) | |
don't sort items when they're not expanded
Diffstat (limited to 'src')
| -rw-r--r-- | src/filetreeitem.cpp | 10 | ||||
| -rw-r--r-- | src/filetreeitem.h | 2 | ||||
| -rw-r--r-- | src/filetreemodel.cpp | 8 | ||||
| -rw-r--r-- | src/filetreemodel.h | 2 |
4 files changed, 12 insertions, 10 deletions
diff --git a/src/filetreeitem.cpp b/src/filetreeitem.cpp index 9eff9564..e5425573 100644 --- a/src/filetreeitem.cpp +++ b/src/filetreeitem.cpp @@ -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); } } diff --git a/src/filetreeitem.h b/src/filetreeitem.h index e173a849..390d5499 100644 --- a/src/filetreeitem.h +++ b/src/filetreeitem.h @@ -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() { diff --git a/src/filetreemodel.cpp b/src/filetreemodel.cpp index 40cded09..2130bf89 100644 --- a/src/filetreemodel.cpp +++ b/src/filetreemodel.cpp @@ -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); } } diff --git a/src/filetreemodel.h b/src/filetreemodel.h index fbc7ec44..093407b0 100644 --- a/src/filetreemodel.h +++ b/src/filetreemodel.h @@ -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; |
