diff options
| -rw-r--r-- | src/filetree.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
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<int, env::ShellMenu> 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"); } |
