summaryrefslogtreecommitdiff
path: root/src/filetree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/filetree.cpp')
-rw-r--r--src/filetree.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/filetree.cpp b/src/filetree.cpp
index bf3a9a7a..ae1fddfe 100644
--- a/src/filetree.cpp
+++ b/src/filetree.cpp
@@ -150,11 +150,16 @@ void FileTree::clear()
m_model->clear();
}
+void FileTree::ensureFullyLoaded()
+{
+ m_model->ensureFullyLoaded();
+}
+
FileTreeItem* FileTree::singleSelection()
{
const auto sel = m_tree->selectionModel()->selectedRows();
if (sel.size() == 1) {
- return m_model->itemFromIndex(sel[0]);
+ return m_model->itemFromIndex(proxiedIndex(sel[0]));
}
return nullptr;
@@ -357,7 +362,7 @@ void FileTree::dumpToFile() const
QString file = QFileDialog::getSaveFileName(m_tree->window());
if (file.isEmpty()) {
- log::debug("user cancelled");
+ log::debug("user canceled");
return;
}
@@ -432,7 +437,7 @@ void FileTree::dumpToFile(
void FileTree::onExpandedChanged(const QModelIndex& index, bool expanded)
{
- if (auto* item=m_model->itemFromIndex(index)) {
+ if (auto* item=m_model->itemFromIndex(proxiedIndex(index))) {
item->setExpanded(expanded);
}
}
@@ -494,7 +499,7 @@ bool FileTree::showShellMenu(QPoint pos)
bool warnOnEmpty = true;
for (auto&& index : m_tree->selectionModel()->selectedRows()) {
- auto* item = m_model->itemFromIndex(index);
+ auto* item = m_model->itemFromIndex(proxiedIndex(index));
if (!item) {
continue;
}
@@ -759,3 +764,14 @@ void FileTree::addCommonMenus(QMenu& menu)
.callback([&]{ m_tree->collapseAll(); })
.addTo(menu);
}
+
+QModelIndex FileTree::proxiedIndex(const QModelIndex& index)
+{
+ auto* model = m_tree->model();
+
+ if (auto* proxy=dynamic_cast<QSortFilterProxyModel*>(model)) {
+ return proxy->mapToSource(index);
+ } else {
+ return index;
+ }
+}