diff --git a/src/plugins/coreplugin/iversioncontrol.cpp b/src/plugins/coreplugin/iversioncontrol.cpp index bc86e7884d2..34c9adb1ae6 100644 --- a/src/plugins/coreplugin/iversioncontrol.cpp +++ b/src/plugins/coreplugin/iversioncontrol.cpp @@ -138,13 +138,17 @@ IVersionControl::RepoUrl IVersionControl::getRepoUrl(const QString &location) co return RepoUrl(location); } +void IVersionControl::setTopicCache(TopicCache *topicCache) +{ + m_topicCache = topicCache; +} + QString IVersionControl::vcsTopic(const QString &topLevel) { return m_topicCache ? m_topicCache->topic(topLevel) : QString(); } -IVersionControl::IVersionControl(IVersionControl::TopicCache *topicCache) - : m_topicCache(topicCache) +IVersionControl::IVersionControl() { Core::VcsManager::addVersionControl(this); } diff --git a/src/plugins/coreplugin/iversioncontrol.h b/src/plugins/coreplugin/iversioncontrol.h index 9b834cdc2ad..113dcf84b2d 100644 --- a/src/plugins/coreplugin/iversioncontrol.h +++ b/src/plugins/coreplugin/iversioncontrol.h @@ -86,7 +86,7 @@ public: }; - explicit IVersionControl(TopicCache *topicCache = nullptr); + IVersionControl(); ~IVersionControl() override; virtual QString displayName() const = 0; @@ -239,13 +239,15 @@ public: }; virtual RepoUrl getRepoUrl(const QString &location) const; + void setTopicCache(TopicCache *topicCache); + signals: void repositoryChanged(const QString &repository); void filesChanged(const QStringList &files); void configurationChanged(); private: - TopicCache *m_topicCache; + TopicCache *m_topicCache = nullptr; }; } // namespace Core diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp index 822f7373937..9008f9a7b02 100644 --- a/src/plugins/git/gitversioncontrol.cpp +++ b/src/plugins/git/gitversioncontrol.cpp @@ -62,9 +62,10 @@ private: }; GitVersionControl::GitVersionControl(GitClient *client) : - Core::IVersionControl(new GitTopicCache(client)), m_client(client) -{ } +{ + setTopicCache(new GitTopicCache(client)); +} QString GitVersionControl::displayName() const { diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp index 36783aaba54..7935813abe7 100644 --- a/src/plugins/mercurial/mercurialcontrol.cpp +++ b/src/plugins/mercurial/mercurialcontrol.cpp @@ -64,9 +64,10 @@ private: }; MercurialControl::MercurialControl(MercurialClient *client) : - Core::IVersionControl(new MercurialTopicCache(client)), mercurialClient(client) -{ } +{ + setTopicCache(new MercurialTopicCache(client)); +} QString MercurialControl::displayName() const { diff --git a/src/plugins/subversion/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp index 737c3eecfde..6b52b01814e 100644 --- a/src/plugins/subversion/subversioncontrol.cpp +++ b/src/plugins/subversion/subversioncontrol.cpp @@ -64,9 +64,10 @@ private: }; SubversionControl::SubversionControl(SubversionPluginPrivate *plugin) : - Core::IVersionControl(new SubversionTopicCache(plugin)), m_plugin(plugin) -{ } +{ + setTopicCache(new SubversionTopicCache(plugin)); +} QString SubversionControl::displayName() const {