X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/896ee459af10c73d20d0ae093b4c02348ffedb18..a0d3cf4aa8ffa76ed22a67efa4ea156eb2ef9f68:/src/versioncontrol/fileviewsvnplugin.cpp diff --git a/src/versioncontrol/fileviewsvnplugin.cpp b/src/versioncontrol/fileviewsvnplugin.cpp index 7e56c724c..60ab81415 100644 --- a/src/versioncontrol/fileviewsvnplugin.cpp +++ b/src/versioncontrol/fileviewsvnplugin.cpp @@ -102,6 +102,15 @@ bool FileViewSvnPlugin::beginRetrieval(const QString& directory) { Q_ASSERT(directory.endsWith('/')); + // clear all entries for this directory + QMutableHashIterator it(m_versionInfoHash); + while (it.hasNext()) { + it.next(); + if (it.key().startsWith(directory)) { + it.remove(); + } + } + QStringList arguments; arguments << "status" << "--show-updates" << directory; @@ -309,9 +318,11 @@ void FileViewSvnPlugin::removeFiles() i18nc("@info:status", "Removed files from SVN repository.")); } -void FileViewSvnPlugin::slotOperationCompleted() +void FileViewSvnPlugin::slotOperationCompleted(int exitCode, QProcess::ExitStatus exitStatus) { - if (m_contextItems.isEmpty()) { + if ((exitStatus != QProcess::NormalExit) || (exitCode != 0)) { + emit errorMessage(m_errorMsg); + } else if (m_contextItems.isEmpty()) { emit operationCompletedMessage(m_operationCompletedMsg); emit versionStatesChanged(); } else { @@ -344,8 +355,8 @@ void FileViewSvnPlugin::execSvnCommand(const QString& svnCommand, void FileViewSvnPlugin::startSvnCommandProcess() { QProcess* process = new QProcess(this); - connect(process, SIGNAL(finished(int)), - this, SLOT(slotOperationCompleted())); + connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), + this, SLOT(slotOperationCompleted(int, QProcess::ExitStatus))); connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(slotOperationError()));