]> cloud.milkyroute.net Git - dolphin.git/commitdiff
fixed issue that SVN actions got disabled after selecting items
authorPeter Penz <peter.penz19@gmail.com>
Mon, 18 Jan 2010 14:08:21 +0000 (14:08 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Mon, 18 Jan 2010 14:08:21 +0000 (14:08 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1076617

src/versioncontrol/fileviewsvnplugin.cpp
src/versioncontrol/fileviewsvnplugin.h

index 60ab8141596247a59346ec01fab0fe9e3382fb88..f43f10e98d97c07000692ecd52aba7d0f5b456b0 100644 (file)
@@ -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)));
index e908afba85746da821af341385b7c1fa1ddd249f..e94c3ebcb408b95a21cfecbb980613814dd97723 100644 (file)
@@ -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