summaryrefslogtreecommitdiff
path: root/src/filetree.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-01-21 23:45:11 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-02-04 03:33:21 -0500
commite3211683fd75b4c297f2f670819ad5dacb18a19c (patch)
tree938325c3a596ea24c74f3718b6c2b8c56befae04 /src/filetree.cpp
parentabdf98bbfe5b9a5635a158d4554e1b6e1155789b (diff)
shell menu for multiple files
Diffstat (limited to 'src/filetree.cpp')
-rw-r--r--src/filetree.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/filetree.cpp b/src/filetree.cpp
index 3c99ab05..d7dbc6e6 100644
--- a/src/filetree.cpp
+++ b/src/filetree.cpp
@@ -442,18 +442,8 @@ void FileTree::onContextMenu(const QPoint &pos)
const auto m = QApplication::keyboardModifiers();
if (m & Qt::ShiftModifier) {
- if (auto* item=singleSelection()) {
- if (!item->isDirectory()) {
- const auto file = m_core.directoryStructure()->searchFile(
- item->dataRelativeFilePath().toStdWString(), nullptr);
-
- if (file) {
- const QFileInfo fi(QString::fromStdWString(file->getFullPath()));
- env::showShellMenu(m_tree, fi, m_tree->viewport()->mapToGlobal(pos));
- return;
- }
- }
- }
+ showShellMenu(pos);
+ return;
}
QMenu menu;
@@ -476,6 +466,22 @@ void FileTree::onContextMenu(const QPoint &pos)
menu.exec(m_tree->viewport()->mapToGlobal(pos));
}
+void FileTree::showShellMenu(QPoint pos)
+{
+ std::vector<QFileInfo> files;
+
+ for (auto&& index : m_tree->selectionModel()->selectedRows()) {
+ auto* item = m_model->itemFromIndex(index);
+ if (!item) {
+ continue;
+ }
+
+ files.push_back(item->realPath());
+ }
+
+ env::showShellMenu(m_tree, files, m_tree->viewport()->mapToGlobal(pos));
+}
+
void FileTree::addDirectoryMenus(QMenu&, FileTreeItem&)
{
// noop