From 2f3b9f9a9eaa876cac1c12fe6756dc24cd709a20 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Tue, 4 Feb 2020 03:20:20 -0500 Subject: skip files from archives for the shell menu --- src/filetree.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/filetree.cpp') diff --git a/src/filetree.cpp b/src/filetree.cpp index 41b10586..5831e75e 100644 --- a/src/filetree.cpp +++ b/src/filetree.cpp @@ -491,7 +491,7 @@ bool FileTree::showShellMenu(QPoint pos) // menus by origin std::map menus; int totalFiles = 0; - bool hasDirectory = false; + bool warnOnEmpty = true; for (auto&& index : m_tree->selectionModel()->selectedRows()) { auto* item = m_model->itemFromIndex(index); @@ -500,7 +500,7 @@ bool FileTree::showShellMenu(QPoint pos) } if (item->isDirectory()) { - hasDirectory = true; + warnOnEmpty = false; log::warn( "directories do not have shell menus; '{}' selected", @@ -509,6 +509,16 @@ bool FileTree::showShellMenu(QPoint pos) continue; } + if (item->isFromArchive()) { + warnOnEmpty = false; + + log::warn( + "files from archives do not have shell menus; '{}' selected", + item->filename()); + + continue; + } + auto itor = menus.find(item->originID()); if (itor == menus.end()) { itor = menus.emplace(item->originID(), mw).first; @@ -557,9 +567,9 @@ bool FileTree::showShellMenu(QPoint pos) } if (menus.empty()) { - // don't warn if a directory was selected, a warning has already been - // logged above - if (!hasDirectory) { + // don't warn if something that doesn't have a shell menu was selected, a + // warning has already been logged above + if (warnOnEmpty) { log::warn("no menus to show"); } -- cgit v1.3.1