From e63d1f64b51ff0ec09f730108956a80e65820259 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Thu, 11 Jul 2013 12:52:32 +0300
Subject: [PATCH] Git: Refresh configuration widget if editor is found

Task-number: QTCREATORBUG-9783
Change-Id: Id1092fb9a79dfbf0425be4913241a507afb56a85
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/git/gitclient.cpp | 38 ++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index f23c5dd39e8..f92397bbb39 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -485,10 +485,16 @@ class GitCommitDiffArgumentsWidget : public BaseGitDiffArgumentsWidget
 public:
     GitCommitDiffArgumentsWidget(Git::Internal::GitClient *client, const QString &directory,
                                  const QStringList &unstaged, const QStringList &staged) :
-        BaseGitDiffArgumentsWidget(client, directory, QStringList()),
-        m_unstagedFileNames(unstaged),
-        m_stagedFileNames(staged)
-    { }
+        BaseGitDiffArgumentsWidget(client, directory, QStringList())
+    {
+        setFileNames(unstaged, staged);
+    }
+
+    void setFileNames(const QStringList &unstaged, const QStringList &staged)
+    {
+        m_unstagedFileNames = unstaged;
+        m_stagedFileNames = staged;
+    }
 
     void executeCommand()
     {
@@ -496,8 +502,8 @@ public:
     }
 
 private:
-    const QStringList m_unstagedFileNames;
-    const QStringList m_stagedFileNames;
+    QStringList m_unstagedFileNames;
+    QStringList m_stagedFileNames;
 };
 
 class GitFileDiffArgumentsWidget : public BaseGitDiffArgumentsWidget
@@ -531,7 +537,7 @@ public:
 
     void executeCommand()
     {
-        m_client->diffBranch(m_workingDirectory, arguments(), m_branchName);
+        m_client->diffBranch(m_workingDirectory, baseArguments(), m_branchName);
     }
 
 private:
@@ -566,7 +572,7 @@ public:
 
     void executeCommand()
     {
-        m_client->show(m_workingDirectory, m_id, arguments());
+        m_client->show(m_workingDirectory, m_id, baseArguments());
     }
 
 private:
@@ -611,7 +617,7 @@ public:
         int line = -1;
         if (m_editor)
             line = m_editor->lineNumberOfCurrentEditor();
-        m_client->blame(m_workingDirectory, arguments(), m_fileName, m_revision, line);
+        m_client->blame(m_workingDirectory, baseArguments(), m_fileName, m_revision, line);
     }
 
 private:
@@ -635,8 +641,7 @@ public:
         BaseGitDiffArgumentsWidget(client, directory, args),
         m_client(client),
         m_workingDirectory(directory),
-        m_enableAnnotationContextMenu(enableAnnotationContextMenu),
-        m_fileNames(fileNames)
+        m_enableAnnotationContextMenu(enableAnnotationContextMenu)
     {
         QTC_ASSERT(!directory.isEmpty(), return);
         QToolButton *diffButton = addToggleButton(QLatin1String("--patch"), tr("Show Diff"),
@@ -652,11 +657,17 @@ public:
         QToolButton *graphButton = addToggleButton(graphArguments, tr("Graph"),
                                               tr("Show textual graph log."));
         mapSetting(graphButton, m_client->settings()->boolPointer(GitSettings::graphLogKey));
+        setFileNames(fileNames);
+    }
+
+    void setFileNames(const QStringList &fileNames)
+    {
+        m_fileNames = fileNames;
     }
 
     void executeCommand()
     {
-        m_client->log(m_workingDirectory, m_fileNames, m_enableAnnotationContextMenu, arguments());
+        m_client->log(m_workingDirectory, m_fileNames, m_enableAnnotationContextMenu, baseArguments());
     }
 
 private:
@@ -964,6 +975,7 @@ void GitClient::diff(const QString &workingDirectory,
         }
 
         GitCommitDiffArgumentsWidget *argWidget = qobject_cast<GitCommitDiffArgumentsWidget *>(editor->configurationWidget());
+        argWidget->setFileNames(unstagedFileNames, stagedFileNames);
         QStringList userDiffArgs = argWidget->arguments();
         editor->setDiffBaseDirectory(workingDirectory);
 
@@ -1126,6 +1138,8 @@ void GitClient::log(const QString &workingDirectory, const QStringList &fileName
          arguments << QLatin1String("-n") << QString::number(logCount);
 
     GitLogArgumentsWidget *argWidget = qobject_cast<GitLogArgumentsWidget *>(editor->configurationWidget());
+    argWidget->setBaseArguments(args);
+    argWidget->setFileNames(fileNames);
     QStringList userArgs = argWidget->arguments();
 
     arguments.append(userArgs);
-- 
GitLab