summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-06-26 22:16:45 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-07-04 15:26:39 +0200
commitbe5133cf72fc5c9f140ea090be12798887b885ab (patch)
tree4abc25ee82af818ed1f705ceda281046011d78af
parent0159774451913270feb9301d3d5f5cacee70743a (diff)
downloadqt-creator-be5133cf72fc5c9f140ea090be12798887b885ab.tar.gz
Git: Update branches dialog when repository is changed
and on fetch Task-number: QTCREATORBUG-9667 Change-Id: Id2e5080502bbc28d5f7900dd0433e468dda56c82 Reviewed-by: Robert Loehning <robert.loehning@digia.com> Reviewed-by: Petar Perisin <petar.perisin@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>
-rw-r--r--src/plugins/git/branchdialog.cpp6
-rw-r--r--src/plugins/git/branchdialog.h1
-rw-r--r--src/plugins/git/gitclient.cpp9
-rw-r--r--src/plugins/git/gitclient.h1
-rw-r--r--src/plugins/git/gitplugin.cpp8
-rw-r--r--src/plugins/git/gitplugin.h1
6 files changed, 25 insertions, 1 deletions
diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp
index 0e9c8c33f1..37a7d33173 100644
--- a/src/plugins/git/branchdialog.cpp
+++ b/src/plugins/git/branchdialog.cpp
@@ -97,6 +97,12 @@ void BranchDialog::refresh(const QString &repository, bool force)
m_ui->branchView->expandAll();
}
+void BranchDialog::refreshIfSame(const QString &repository)
+{
+ if (m_repository == repository)
+ refresh();
+}
+
void BranchDialog::enableButtons()
{
QModelIndex idx = selectedIndex();
diff --git a/src/plugins/git/branchdialog.h b/src/plugins/git/branchdialog.h
index c1b38ac619..aac316d1c8 100644
--- a/src/plugins/git/branchdialog.h
+++ b/src/plugins/git/branchdialog.h
@@ -61,6 +61,7 @@ public:
public slots:
void refresh(const QString &repository, bool force);
+ void refreshIfSame(const QString &repository);
private slots:
void enableButtons();
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index d23b76add4..bb365dd1a0 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2331,6 +2331,11 @@ void GitClient::finishSubmoduleUpdate()
m_updatedSubmodules.clear();
}
+void GitClient::fetchFinished(const QVariant &cookie)
+{
+ GitPlugin::instance()->updateBranches(cookie.toString());
+}
+
// Trim a git status file spec: "modified: foo .cpp" -> "modified: foo .cpp"
static inline QString trimFileSpecification(QString fileSpec)
{
@@ -2930,7 +2935,9 @@ void GitClient::fetch(const QString &workingDirectory, const QString &remote)
{
QStringList arguments(QLatin1String("fetch"));
arguments << (remote.isEmpty() ? QLatin1String("--all") : remote);
- executeGit(workingDirectory, arguments, 0, true);
+ VcsBase::Command *command = executeGit(workingDirectory, arguments, 0, true);
+ command->setCookie(workingDirectory);
+ connect(command, SIGNAL(success(QVariant)), this, SLOT(fetchFinished(QVariant)));
}
bool GitClient::executeAndHandleConflicts(const QString &workingDirectory,
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index faf3996468..22e552d7da 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -323,6 +323,7 @@ private slots:
void appendOutputData(const QByteArray &data) const;
void appendOutputDataSilently(const QByteArray &data) const;
void finishSubmoduleUpdate();
+ void fetchFinished(const QVariant &cookie);
private:
QTextCodec *getSourceCodec(const QString &file) const;
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index b7d4976978..9d3dda8d81 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -689,6 +689,8 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
connect(Core::ICore::vcsManager(), SIGNAL(repositoryChanged(QString)),
this, SLOT(updateContinueAndAbortCommands()));
+ connect(Core::ICore::vcsManager(), SIGNAL(repositoryChanged(QString)),
+ this, SLOT(updateBranches(QString)));
if (!Core::ICore::mimeDatabase()->addMimeTypes(QLatin1String(RC_GIT_MIME_XML), errorMessage))
return false;
@@ -1427,6 +1429,12 @@ void GitPlugin::updateContinueAndAbortCommands()
}
}
+void GitPlugin::updateBranches(const QString &repository)
+{
+ if (m_branchDialog && m_branchDialog->isVisible())
+ m_branchDialog->refreshIfSame(repository);
+}
+
void GitPlugin::updateRepositoryBrowserAction()
{
const bool repositoryEnabled = currentState().hasTopLevel();
diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h
index 4a70caedee..468d54dca3 100644
--- a/src/plugins/git/gitplugin.h
+++ b/src/plugins/git/gitplugin.h
@@ -102,6 +102,7 @@ public:
public slots:
void startCommit();
+ void updateBranches(const QString &repository);
private slots:
void diffCurrentFile();