diff --git a/src/libs/ui/docsetsdialog.cpp b/src/libs/ui/docsetsdialog.cpp
index af810006..d4d55827 100644
--- a/src/libs/ui/docsetsdialog.cpp
+++ b/src/libs/ui/docsetsdialog.cpp
@@ -689,39 +689,33 @@ void DocsetsDialog::removeDocset(const QString &name)
m_docsetsBeingDeleted.append(name);
- Registry::Docset *docset = m_docsetRegistry->docset(name);
- const QString title = docset->title();
- const QString docsetPath = docset->path();
+ const QString docsetPath
+ = QDir(m_application->settings()->docsetPath).filePath(name + QLatin1String(".docset"));
const QString tmpPath = docsetPath + QLatin1String(".deleteme.")
+ QString::number(QDateTime::currentMSecsSinceEpoch());
- // Remove from registry first to avoid renaming files in use on Windows.
- m_docsetRegistry->remove(name);
+ if (m_docsetRegistry->contains(name)) {
+ m_docsetRegistry->remove(name);
+ }
// Rename first to allow simultaneous installation.
if (!QDir().rename(docsetPath, tmpPath)) {
- const QString error = tr("Cannot delete docset %1! Please try closing other "
- "applications first, as they may be accessing the docset "
- "files.").arg(title);
+ const QString error = tr("Cannot remove directory %1! It might be in use"
+ "by another process.").arg(docsetPath);
QMessageBox::warning(this, QStringLiteral("Zeal"), error);
m_docsetsBeingDeleted.removeOne(name);
- m_docsetRegistry->addDocset(docsetPath);
return;
}
+ QListWidgetItem *listItem = findDocsetListItem(name);
+ if (listItem) {
+ listItem->setHidden(false);
+ }
+
QFutureWatcher *watcher = new QFutureWatcher();
- connect(watcher, &QFutureWatcher::finished, [=] {
- if (!watcher->result()) {
- QMessageBox::warning(this, QStringLiteral("Zeal"),
- tr("Cannot delete docset %1!").arg(title));
- }
-
- QListWidgetItem *listItem = findDocsetListItem(name);
- if (listItem)
- listItem->setHidden(false);
-
+ connect(watcher, &QFutureWatcher::finished, [=] {
+ // TODO: Log error if watcher->result() == false.
watcher->deleteLater();
-
m_docsetsBeingDeleted.removeOne(name);
});