From 1dc90bcf441a7f32b06ecccbfd224074639b5d64 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 5 Jan 2016 23:58:49 +0200 Subject: [PATCH] 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 --- src/plugins/git/gitsubmiteditor.cpp | 13 +++++++++++++ src/plugins/git/gitsubmiteditor.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp index b39fdeec336..faf16c783f5 100644 --- a/src/plugins/git/gitsubmiteditor.cpp +++ b/src/plugins/git/gitsubmiteditor.cpp @@ -35,6 +35,7 @@ #include "gitsubmiteditorwidget.h" #include +#include #include #include #include @@ -43,6 +44,7 @@ #include #include #include +#include #include 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(); diff --git a/src/plugins/git/gitsubmiteditor.h b/src/plugins/git/gitsubmiteditor.h index 4a8910d01bf..24d85035d5b 100644 --- a/src/plugins/git/gitsubmiteditor.h +++ b/src/plugins/git/gitsubmiteditor.h @@ -67,6 +67,7 @@ signals: protected: QByteArray fileContents() const override; void updateFileModel() override; + void forceUpdateFileModel(); private: void slotDiffSelected(const QList &rows);