FileViewSvnPlugin::FileViewSvnPlugin(QObject* parent, const QList<QVariant>& args) :
KVersionControlPlugin(parent),
+ m_pendingOperation(false),
m_versionInfoHash(),
m_versionInfoKeys(),
m_updateAction(0),
QList<QAction*> FileViewSvnPlugin::contextMenuActions(const QString& directory)
{
- const bool enabled = m_contextItems.isEmpty();
+ const bool enabled = !m_pendingOperation;
if (enabled) {
m_contextDir = directory;
}
void FileViewSvnPlugin::slotOperationCompleted(int exitCode, QProcess::ExitStatus exitStatus)
{
+ m_pendingOperation = false;
+
if ((exitStatus != QProcess::NormalExit) || (exitCode != 0)) {
emit errorMessage(m_errorMsg);
} else if (m_contextItems.isEmpty()) {
void FileViewSvnPlugin::slotOperationError()
{
- emit errorMessage(m_errorMsg);
-
// don't do any operation on other items anymore
m_contextItems.clear();
+ m_pendingOperation = false;
+
+ emit errorMessage(m_errorMsg);
}
void FileViewSvnPlugin::execSvnCommand(const QString& svnCommand,
void FileViewSvnPlugin::startSvnCommandProcess()
{
+ m_pendingOperation = true;
+
QProcess* process = new QProcess(this);
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(slotOperationCompleted(int, QProcess::ExitStatus)));