diff --git a/src/plugins/common/core/dfmplugin-fileoperations/fileoperationsevent/trashfileeventreceiver.cpp b/src/plugins/common/core/dfmplugin-fileoperations/fileoperationsevent/trashfileeventreceiver.cpp index 30626203d7..04f5ec8e78 100644 --- a/src/plugins/common/core/dfmplugin-fileoperations/fileoperationsevent/trashfileeventreceiver.cpp +++ b/src/plugins/common/core/dfmplugin-fileoperations/fileoperationsevent/trashfileeventreceiver.cpp @@ -68,7 +68,14 @@ JobHandlePointer TrashFileEventReceiver::doMoveToTrash(const quint64 windowId, c const QUrl &sourceFirst = sources.first(); JobHandlePointer handle = nullptr; - if (!FileUtils::fileCanTrash(sourceFirst) || !dfmio::DFMUtils::supportTrash(sourceFirst)) { + bool nullDirDelete = false; + if (sources.count() == 1) { + auto info = InfoFactory::create(sourceFirst); + nullDirDelete = info && info->isAttributes(OptInfoType::kIsDir) + && !info->isAttributes(OptInfoType::kIsSymLink) + && !info->isAttributes(OptInfoType::kIsWritable); + } + if (nullDirDelete || !FileUtils::fileCanTrash(sourceFirst) || !dfmio::DFMUtils::supportTrash(sourceFirst)) { if (DialogManagerInstance->showDeleteFilesDialog(sources, true) != QDialog::Accepted) return nullptr; handle = copyMoveJob->deletes(sources, flags);