┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/versioncontrol/fileviewsvnplugin.cpp12
-rw-r--r--src/versioncontrol/fileviewsvnplugin.h1
2 files changed, 10 insertions, 3 deletions
diff --git a/src/versioncontrol/fileviewsvnplugin.cpp b/src/versioncontrol/fileviewsvnplugin.cpp
index 60ab81415..f43f10e98 100644
--- a/src/versioncontrol/fileviewsvnplugin.cpp
+++ b/src/versioncontrol/fileviewsvnplugin.cpp
@@ -43,6 +43,7 @@ K_EXPORT_PLUGIN(FileViewSvnPluginFactory("fileviewsvnplugin"))
FileViewSvnPlugin::FileViewSvnPlugin(QObject* parent, const QList<QVariant>& args) :
KVersionControlPlugin(parent),
+ m_pendingOperation(false),
m_versionInfoHash(),
m_versionInfoKeys(),
m_updateAction(0),
@@ -222,7 +223,7 @@ QList<QAction*> FileViewSvnPlugin::contextMenuActions(const KFileItemList& items
QList<QAction*> FileViewSvnPlugin::contextMenuActions(const QString& directory)
{
- const bool enabled = m_contextItems.isEmpty();
+ const bool enabled = !m_pendingOperation;
if (enabled) {
m_contextDir = directory;
}
@@ -320,6 +321,8 @@ void FileViewSvnPlugin::removeFiles()
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()) {
@@ -332,10 +335,11 @@ void FileViewSvnPlugin::slotOperationCompleted(int exitCode, QProcess::ExitStatu
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,
@@ -354,6 +358,8 @@ 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)));
diff --git a/src/versioncontrol/fileviewsvnplugin.h b/src/versioncontrol/fileviewsvnplugin.h
index e908afba8..e94c3ebcb 100644
--- a/src/versioncontrol/fileviewsvnplugin.h
+++ b/src/versioncontrol/fileviewsvnplugin.h
@@ -72,6 +72,7 @@ private:
void startSvnCommandProcess();
private:
+ bool m_pendingOperation;
QHash<QString, VersionState> m_versionInfoHash;
QList<QString> m_versionInfoKeys; // cache for accessing the keys of the hash