diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-06-26 22:16:45 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2013-07-04 15:26:39 +0200 |
commit | be5133cf72fc5c9f140ea090be12798887b885ab (patch) | |
tree | 4abc25ee82af818ed1f705ceda281046011d78af | |
parent | 0159774451913270feb9301d3d5f5cacee70743a (diff) | |
download | qt-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.cpp | 6 | ||||
-rw-r--r-- | src/plugins/git/branchdialog.h | 1 | ||||
-rw-r--r-- | src/plugins/git/gitclient.cpp | 9 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 1 | ||||
-rw-r--r-- | src/plugins/git/gitplugin.cpp | 8 | ||||
-rw-r--r-- | src/plugins/git/gitplugin.h | 1 |
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(); |