diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index e66c4bfa3a2..a2ea4b9ef89 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -15,6 +15,8 @@ #include #include +#include + #include #include #include @@ -81,8 +83,14 @@ VcsCommand *VcsBaseClientImpl::createCommand(const FilePath &workingDirectory, if (editor) // assume that the commands output is the important thing cmd->addFlags(VcsCommand::SilentOutput); } else if (editor) { - connect(cmd, &VcsCommand::done, editor, - [editor, cmd] { editor->setPlainText(cmd->cleanedStdOut()); }); + connect(cmd, &VcsCommand::done, editor, [editor, cmd] { + if (cmd->result() != ProcessResult::FinishedWithSuccess) { + editor->textDocument()->setPlainText(tr("Failed to retrieve data.")); + return; + } + editor->setPlainText(cmd->cleanedStdOut()); + editor->gotoDefaultLine(); + }); } return cmd; diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index a962953fb1b..aa45edc2710 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -1211,15 +1211,6 @@ DiffChunk VcsBaseEditorWidget::diffChunk(QTextCursor cursor) const return rc; } -void VcsBaseEditorWidget::reportCommandFinished(bool success) -{ - hideProgressIndicator(); - if (!success) - textDocument()->setPlainText(tr("Failed to retrieve data.")); - else if (d->m_defaultLineNumber >= 0) - gotoLine(d->m_defaultLineNumber); -} - const VcsBaseEditorParameters *VcsBaseEditor::findType(const VcsBaseEditorParameters *array, int arraySize, EditorContentType et) @@ -1394,9 +1385,7 @@ void VcsBaseEditorWidget::setCommand(VcsCommand *command) if (command) { d->m_progressIndicator = new ProgressIndicator(ProgressIndicatorSize::Large); d->m_progressIndicator->attachToWidget(this); - connect(command, &VcsCommand::done, this, [this] { - reportCommandFinished(d->m_command->result() == ProcessResult::FinishedWithSuccess); - }); + connect(command, &VcsCommand::done, this, &VcsBaseEditorWidget::hideProgressIndicator); QTimer::singleShot(100, this, &VcsBaseEditorWidget::showProgressIndicator); } } @@ -1406,6 +1395,12 @@ void VcsBaseEditorWidget::setDefaultLineNumber(int line) d->m_defaultLineNumber = line; } +void VcsBaseEditorWidget::gotoDefaultLine() +{ + if (d->m_defaultLineNumber >= 0) + gotoLine(d->m_defaultLineNumber); +} + void VcsBaseEditorWidget::setPlainText(const QString &text) { textDocument()->setPlainText(text); diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 352b1379574..badb7985fbb 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -192,6 +192,7 @@ public: void setCommand(VcsCommand *command); void setDefaultLineNumber(int line); + void gotoDefaultLine(); virtual void setPlainText(const QString &text); @@ -205,9 +206,6 @@ signals: void diffChunkApplied(const VcsBase::DiffChunk &dc); void diffChunkReverted(const VcsBase::DiffChunk &dc); -public slots: - void reportCommandFinished(bool success); - protected: void contextMenuEvent(QContextMenuEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override;