diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1322,7 +1322,7 @@ renameAction->setEnabled(capabilities.supportsMoving()); moveToTrashAction->setEnabled(enableMoveToTrash); - deleteAction->setEnabled(capabilities.supportsDeleting()); + deleteAction->setEnabled(true); deleteWithTrashShortcut->setEnabled(capabilities.supportsDeleting() && !enableMoveToTrash); cutAction->setEnabled(capabilities.supportsMoving()); } diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -664,11 +664,27 @@ void DolphinView::deleteSelectedItems() { const QList list = simplifiedSelectedUrls(); + KFileItemList itemList; + foreach(QUrl u , list) { + KFileItem i(u); + itemList << i; + } + KFileItemListProperties capabilities(itemList); KIO::JobUiDelegate uiDelegate; + bool proceed; + QString showWarning = "true"; uiDelegate.setWindow(window()); - if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::DefaultConfirmation)) { + if (!capabilities.supportsDeleting()) { + proceed = uiDelegate.askPrivilegeOpConfirmation(list, KIO::JobUiDelegate::PrivilegeDelete); + showWarning = "false"; + } else { + proceed = uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::DefaultConfirmation); + } + + if (proceed) { KIO::Job* job = KIO::del(list); + job->addMetaData(QStringLiteral("ShowInternalWarning"), showWarning); KJobWidgets::setWindow(job, this); connect(job, &KIO::Job::result, this, &DolphinView::slotDeleteFileFinished);