diff --git a/src/libs/utils/removefiledialog.cpp b/src/libs/utils/removefiledialog.cpp index 863b726b0ca..602d5d8c9db 100644 --- a/src/libs/utils/removefiledialog.cpp +++ b/src/libs/utils/removefiledialog.cpp @@ -16,7 +16,8 @@ namespace Utils { RemoveFileDialog::RemoveFileDialog(const FilePath &filePath, QWidget *parent) : QDialog(parent) { - setWindowTitle(tr("Remove File")); + const bool isFile = filePath.isFile(); + setWindowTitle(isFile ? tr("Remove File") : tr("Remove Folder")); resize(514, 159); QFont font; @@ -36,7 +37,7 @@ RemoveFileDialog::RemoveFileDialog(const FilePath &filePath, QWidget *parent) using namespace Layouting; Column { - tr("File to remove:"), + isFile ? tr("File to remove:") : tr("Folder to remove:"), fileNameLabel, Space(10), m_deleteFileCheckBox, diff --git a/src/plugins/coreplugin/foldernavigationwidget.cpp b/src/plugins/coreplugin/foldernavigationwidget.cpp index 226629386f6..64f96a6be3f 100644 --- a/src/plugins/coreplugin/foldernavigationwidget.cpp +++ b/src/plugins/coreplugin/foldernavigationwidget.cpp @@ -708,13 +708,8 @@ void FolderNavigationWidget::contextMenuEvent(QContextMenuEvent *ev) if (m_fileSystemModel->flags(current) & Qt::ItemIsEditable) menu.addAction(Core::ActionManager::command(RENAMEFILE)->action()); newFolder = menu.addAction(tr("New Folder")); - if (isDir) { - QDirIterator it(filePath.toString(), - QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot); - // only allow removing folders that are empty - if (!it.hasNext()) - removeFolder = menu.addAction(tr("Remove Folder")); - } + if (isDir) + removeFolder = menu.addAction(tr("Remove Folder")); } menu.addSeparator(); @@ -733,7 +728,14 @@ void FolderNavigationWidget::contextMenuEvent(QContextMenuEvent *ev) else createNewFolder(current.parent()); } else if (action == removeFolder) { - QDir().rmdir(filePath.toString()); + RemoveFileDialog dialog(filePath, Core::ICore::dialogParent()); + dialog.setDeleteFileVisible(false); + if (dialog.exec() == QDialog::Accepted) { + QString errorMessage; + filePath.removeRecursively(&errorMessage); + if (!errorMessage.isEmpty()) + QMessageBox::critical(ICore::dialogParent(), tr("Error"), errorMessage); + } } else if (action == collapseAllAction) { m_listView->collapseAll(); }