diff --git a/src/libs/clangsupport/filecontainerv2.cpp b/src/libs/clangsupport/filecontainerv2.cpp index 96cc528750a..af5d89a787b 100644 --- a/src/libs/clangsupport/filecontainerv2.cpp +++ b/src/libs/clangsupport/filecontainerv2.cpp @@ -30,9 +30,9 @@ namespace V2 { QDebug operator<<(QDebug debug, const FileContainer &container) { - debug.nospace() << "FileContainer(" - << container.filePath << ", " + debug.nospace() << "FileContainer(" << container.filePath << ", " << container.commandLineArguments << ", " + << container.unsavedFileContent.hasContent() << ", " << container.documentRevision; debug.nospace() << ")"; diff --git a/src/plugins/clangpchmanager/qtcreatorprojectupdater.h b/src/plugins/clangpchmanager/qtcreatorprojectupdater.h index fa008f14aec..4d66a2f8c30 100644 --- a/src/plugins/clangpchmanager/qtcreatorprojectupdater.h +++ b/src/plugins/clangpchmanager/qtcreatorprojectupdater.h @@ -28,6 +28,7 @@ #include "pchmanagerprojectupdater.h" #include +#include #include @@ -49,8 +50,9 @@ CLANGPCHMANAGER_EXPORT std::vector createGenera CLANGPCHMANAGER_EXPORT std::vector createProjectParts(ProjectExplorer::Project *project); } -template -class QtCreatorProjectUpdater : public ProjectUpdaterType +template +class QtCreatorProjectUpdater : public ProjectUpdaterType, + public ProjectExplorer::ExtraCompilerFactoryObserver { public: template @@ -90,6 +92,15 @@ public: ProjectUpdaterType::removeGeneratedFiles({ClangBackEnd::FilePath{filePath}}); } +protected: + void newExtraCompiler(const ProjectExplorer::Project *, + const Utils::FileName &, + const Utils::FileNameList &targets) override + { + for (const Utils::FileName &target : targets) + abstractEditorUpdated(target.toString(), {}); + } + private: void connectToCppModelManager() { diff --git a/src/plugins/projectexplorer/extracompiler.cpp b/src/plugins/projectexplorer/extracompiler.cpp index e73b44cb901..df7297c33de 100644 --- a/src/plugins/projectexplorer/extracompiler.cpp +++ b/src/plugins/projectexplorer/extracompiler.cpp @@ -52,7 +52,7 @@ namespace ProjectExplorer { Q_GLOBAL_STATIC(QThreadPool, s_extraCompilerThreadPool); Q_GLOBAL_STATIC(QList, factories); - +Q_GLOBAL_STATIC(QVector, observers); class ExtraCompilerPrivate { public: @@ -310,7 +310,8 @@ void ExtraCompiler::setContent(const Utils::FileName &file, const QByteArray &co } } -ExtraCompilerFactory::ExtraCompilerFactory(QObject *parent) : QObject(parent) +ExtraCompilerFactory::ExtraCompilerFactory(QObject *parent) + : QObject(parent) { factories->append(this); } @@ -320,6 +321,14 @@ ExtraCompilerFactory::~ExtraCompilerFactory() factories->removeAll(this); } +void ExtraCompilerFactory::annouceCreation(const Project *project, + const Utils::FileName &source, + const Utils::FileNameList &targets) +{ + for (ExtraCompilerFactoryObserver *observer : *observers) + observer->newExtraCompiler(project, source, targets); +} + QList ExtraCompilerFactory::extraCompilerFactories() { return *factories(); @@ -455,4 +464,14 @@ void ProcessExtraCompiler::cleanUp() setCompileTime(QDateTime::currentDateTime()); } +ExtraCompilerFactoryObserver::ExtraCompilerFactoryObserver() +{ + observers->push_back(this); +} + +ExtraCompilerFactoryObserver::~ExtraCompilerFactoryObserver() +{ + observers->removeOne(this); +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/extracompiler.h b/src/plugins/projectexplorer/extracompiler.h index c93830b10ce..006555ffc63 100644 --- a/src/plugins/projectexplorer/extracompiler.h +++ b/src/plugins/projectexplorer/extracompiler.h @@ -137,6 +137,20 @@ private: QFutureWatcher *m_watcher = nullptr; }; +class PROJECTEXPLORER_EXPORT ExtraCompilerFactoryObserver +{ + friend class ExtraCompilerFactory; + +protected: + ExtraCompilerFactoryObserver(); + ~ExtraCompilerFactoryObserver(); + + virtual void newExtraCompiler(const Project *project, + const Utils::FileName &source, + const Utils::FileNameList &targets) + = 0; +}; + class PROJECTEXPLORER_EXPORT ExtraCompilerFactory : public QObject { Q_OBJECT @@ -147,8 +161,14 @@ public: virtual FileType sourceType() const = 0; virtual QString sourceTag() const = 0; - virtual ExtraCompiler *create(const Project *project, const Utils::FileName &source, - const Utils::FileNameList &targets) = 0; + virtual ExtraCompiler *create(const Project *project, + const Utils::FileName &source, + const Utils::FileNameList &targets) + = 0; + + void annouceCreation(const Project *project, + const Utils::FileName &source, + const Utils::FileNameList &targets); static QList extraCompilerFactories(); }; diff --git a/src/plugins/qtsupport/qscxmlcgenerator.cpp b/src/plugins/qtsupport/qscxmlcgenerator.cpp index f9e4c3c4555..7874cde57d0 100644 --- a/src/plugins/qtsupport/qscxmlcgenerator.cpp +++ b/src/plugins/qtsupport/qscxmlcgenerator.cpp @@ -149,6 +149,8 @@ ExtraCompiler *QScxmlcGeneratorFactory::create( const Project *project, const Utils::FileName &source, const Utils::FileNameList &targets) { + annouceCreation(project, source, targets); + return new QScxmlcGenerator(project, source, targets, this); } diff --git a/src/plugins/qtsupport/uicgenerator.cpp b/src/plugins/qtsupport/uicgenerator.cpp index a88619e521a..89e8713b22d 100644 --- a/src/plugins/qtsupport/uicgenerator.cpp +++ b/src/plugins/qtsupport/uicgenerator.cpp @@ -100,6 +100,8 @@ ExtraCompiler *UicGeneratorFactory::create(const Project *project, const Utils::FileName &source, const Utils::FileNameList &targets) { + annouceCreation(project, source, targets); + return new UicGenerator(project, source, targets, this); }