From 83d6e81d94e7c2b00ddde6dfd4a03246c03f4de3 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Wed, 13 Feb 2013 11:22:51 +0100
Subject: [PATCH] Vcs: Remove "waiting for data" when process fails

Task-number: QTCREATORBUG-7946

Change-Id: Ic3c3ceddd3b4bf115a1da78a5b5e5b640dbbd1f1
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
---
 src/plugins/git/giteditor.cpp         | 3 ++-
 src/plugins/vcsbase/vcsbaseclient.cpp | 4 +++-
 src/plugins/vcsbase/vcsbaseeditor.cpp | 9 +++++++++
 src/plugins/vcsbase/vcsbaseeditor.h   | 1 +
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp
index c6a02e7224a..fe2871ad89e 100644
--- a/src/plugins/git/giteditor.cpp
+++ b/src/plugins/git/giteditor.cpp
@@ -211,8 +211,9 @@ void GitEditor::setPlainTextDataFiltered(const QByteArray &a)
     setPlainTextData(array);
 }
 
-void GitEditor::commandFinishedGotoLine(bool ok, int /* exitCode */, const QVariant &v)
+void GitEditor::commandFinishedGotoLine(bool ok, int exitCode, const QVariant &v)
 {
+    reportCommandFinished(ok, exitCode, v);
     if (ok && v.type() == QVariant::Int) {
         const int line = v.toInt();
         if (line >= 0)
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp
index 6d9b6c02ac8..930d7e37d3b 100644
--- a/src/plugins/vcsbase/vcsbaseclient.cpp
+++ b/src/plugins/vcsbase/vcsbaseclient.cpp
@@ -153,7 +153,9 @@ void VcsBaseClientPrivate::commandFinishedGotoLine(QObject *editorObject)
     VcsBase::VcsBaseEditorWidget *editor = qobject_cast<VcsBase::VcsBaseEditorWidget *>(editorObject);
     Command *cmd = qobject_cast<Command *>(m_cmdFinishedMapper->mapping(editor));
     if (editor && cmd) {
-        if (cmd->lastExecutionSuccess() && cmd->cookie().type() == QVariant::Int) {
+        if (!cmd->lastExecutionSuccess()) {
+            editor->reportCommandFinished(false, cmd->lastExecutionExitCode(), cmd->cookie());
+        } else if (cmd->cookie().type() == QVariant::Int) {
             const int line = cmd->cookie().toInt();
             if (line >= 0)
                 editor->gotoLine(line);
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 45f60c410f1..b5fd6f87997 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -1177,6 +1177,15 @@ void VcsBaseEditorWidget::setPlainTextData(const QByteArray &data)
         setPlainText(codec()->toUnicode(data));
 }
 
+void VcsBaseEditorWidget::reportCommandFinished(bool ok, int exitCode, const QVariant &data)
+{
+    Q_UNUSED(exitCode);
+    Q_UNUSED(data);
+
+    if (!ok)
+        setPlainText(tr("Failed to retrieve data."));
+}
+
 void VcsBaseEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
 {
     TextEditor::BaseTextEditorWidget::setFontSettings(fs);
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index 24885d2475f..839ed91fc12 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -206,6 +206,7 @@ public slots:
     // Convenience slot to set data read from stdout, will use the
     // documents' codec to decode
     void setPlainTextData(const QByteArray &data);
+    void reportCommandFinished(bool ok, int exitCode, const QVariant &data);
 
 protected:
     virtual TextEditor::BaseTextEditor *createEditor();
-- 
GitLab