Git: Force update file model when mergetool is done

Flow:
* Open a commit editor with unmerged files
* Double-click an unmerged file
* Resolve the conflicts with the mergetool, save and close it
* The window is activated and the file model is refreshed immediately, before
  the mergetool process has exited.

When the mergetool exits, repositoryChanged is emitted. Use it to refresh the
file model again.

Task-number: QTCREATORBUG-15569
Change-Id: Ibce7301bc46fe3a5a378a4c15b882e1bb6bbf3c3
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2016-01-05 23:58:49 +02:00
committed by Orgad Shaneh
parent 7de7eb6bca
commit 1dc90bcf44
2 changed files with 14 additions and 0 deletions

View File

@@ -35,6 +35,7 @@
#include "gitsubmiteditorwidget.h"
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/iversioncontrol.h>
#include <coreplugin/progressmanager/progressmanager.h>
#include <utils/qtcassert.h>
#include <vcsbase/submitfilemodel.h>
@@ -43,6 +44,7 @@
#include <QDebug>
#include <QStringList>
#include <QTextCodec>
#include <QTimer>
#include <QtConcurrentRun>
static const char TASK_UPDATE_COMMIT[] = "Git.UpdateCommit";
@@ -134,6 +136,8 @@ GitSubmitEditor::GitSubmitEditor(const VcsBaseSubmitEditorParameters *parameters
{
connect(this, &VcsBaseSubmitEditor::diffSelectedRows, this, &GitSubmitEditor::slotDiffSelected);
connect(submitEditorWidget(), &GitSubmitEditorWidget::show, this, &GitSubmitEditor::showCommit);
connect(GitPlugin::instance()->versionControl(), &Core::IVersionControl::repositoryChanged,
this, &GitSubmitEditor::forceUpdateFileModel);
}
GitSubmitEditor::~GitSubmitEditor()
@@ -270,6 +274,15 @@ void GitSubmitEditor::updateFileModel()
GitPlugin::instance()->client()->addFuture(future);
}
void GitSubmitEditor::forceUpdateFileModel()
{
GitSubmitEditorWidget *w = submitEditorWidget();
if (w->updateInProgress())
QTimer::singleShot(10, &GitSubmitEditor::forceUpdateFileModel);
else
updateFileModel();
}
void GitSubmitEditor::commitDataRetrieved(bool success)
{
GitSubmitEditorWidget *w = submitEditorWidget();