diff --git a/src/plugins/diffeditor/diffeditorcontroller.h b/src/plugins/diffeditor/diffeditorcontroller.h index efa89824403..b94fdc7314c 100644 --- a/src/plugins/diffeditor/diffeditorcontroller.h +++ b/src/plugins/diffeditor/diffeditorcontroller.h @@ -52,15 +52,14 @@ public: bool chunkExists(int fileIndex, int chunkIndex) const; Core::IDocument *document() const; - // reloadFinished() should be called inside the reloader (for synchronous reload) - // or later (for asynchronous reload) - void setReloader(const std::function &reloader); - signals: void chunkActionsRequested(QMenu *menu, int fileIndex, int chunkIndex, const ChunkSelection &selection); protected: + // reloadFinished() should be called inside the reloader (for synchronous reload) + // or later (for asynchronous reload) + void setReloader(const std::function &reloader); void reloadFinished(bool success); void setDiffFiles(const QList &diffFileList, diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp index 35e933272bd..f9da6262e29 100644 --- a/src/plugins/mercurial/mercurialclient.cpp +++ b/src/plugins/mercurial/mercurialclient.cpp @@ -38,12 +38,14 @@ namespace Mercurial::Internal { class MercurialDiffEditorController : public VcsBaseDiffEditorController { public: - MercurialDiffEditorController(IDocument *document) + MercurialDiffEditorController(IDocument *document, const QStringList &args) : VcsBaseDiffEditorController(document) { setDisplayName("Hg Diff"); + setReloader([this, args] { runCommand({addConfigurationArguments(args)}); }); } +private: void runCommand(const QList &args, QTextCodec *codec = nullptr); QStringList addConfigurationArguments(const QStringList &args) const; }; @@ -416,10 +418,7 @@ void MercurialClient::requestReload(const QString &documentId, const QString &so IDocument *document = DiffEditorController::findOrCreateDocument(documentId, title); QTC_ASSERT(document, return); - auto controller = new MercurialDiffEditorController(document); - controller->setReloader([controller, args] { - controller->runCommand({controller->addConfigurationArguments(args)}); - }); + auto controller = new MercurialDiffEditorController(document, args); controller->setVcsBinary(settings().binaryPath.filePath()); controller->setVcsTimeoutS(settings().timeout.value()); controller->setProcessEnvironment(processEnvironment());