diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-12-02 15:23:13 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-12-16 10:32:26 +0100 |
commit | a8e7b6bd388573053eaff61087f33ca584d4be43 (patch) | |
tree | 16baccab6809c14fc13e339e7ffffe2bc89fa12a | |
parent | 3baa1b35e2d566931e4df3dd3cf354dcbacc89c9 (diff) | |
download | qt-creator-a8e7b6bd388573053eaff61087f33ca584d4be43.tar.gz |
CppEditor: Use the project part chosen with CppPreProcessorDialog
...otherwise the CppPreProcessorDialog is only semi-useful.
Change-Id: I6b80967b05e7c9a51cd78ae064a3d78170948e32
Reviewed-by: David Schulz <david.schulz@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
-rw-r--r-- | src/plugins/cppeditor/cppeditor.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cpppreprocessordialog.cpp | 5 | ||||
-rw-r--r-- | src/plugins/cppeditor/cpppreprocessordialog.h | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 11 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.h | 3 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanagerinterface.h | 1 |
6 files changed, 22 insertions, 2 deletions
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e490c4fbe3..ce276c363b 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -715,6 +715,7 @@ void CPPEditorWidget::setMimeType(const QString &mt) QSharedPointer<SnapshotUpdater> updater = m_modelManager->cppEditorSupport(editor())->snapshotUpdater(); + updater->setProjectPart(m_modelManager->projectPartForProjectFile(projectFile)); updater->setEditorDefines(additionalDirectives); m_preprocessorButton->setProperty("highlightWidget", !additionalDirectives.trimmed().isEmpty()); @@ -1994,6 +1995,7 @@ void CPPEditorWidget::showPreProcessorWidget() QSharedPointer<SnapshotUpdater> updater = m_modelManager->cppEditorSupport(editor())->snapshotUpdater(); const QString &additionals = preProcessorDialog.additionalPreProcessorDirectives(); + updater->setProjectPart(preProcessorDialog.projectPart()); updater->setEditorDefines(additionals.toUtf8()); updater->update(m_modelManager->workingCopy()); diff --git a/src/plugins/cppeditor/cpppreprocessordialog.cpp b/src/plugins/cppeditor/cpppreprocessordialog.cpp index e964962555..983bbe9aca 100644 --- a/src/plugins/cppeditor/cpppreprocessordialog.cpp +++ b/src/plugins/cppeditor/cpppreprocessordialog.cpp @@ -112,6 +112,11 @@ int CppPreProcessorDialog::exec() return Accepted; } +CppTools::ProjectPart::Ptr CppPreProcessorDialog::projectPart() const +{ + return m_partAdditions[m_ui->projectComboBox->currentIndex()].projectPart; +} + QString CppPreProcessorDialog::additionalPreProcessorDirectives() const { return m_ui->editWidget->toPlainText(); diff --git a/src/plugins/cppeditor/cpppreprocessordialog.h b/src/plugins/cppeditor/cpppreprocessordialog.h index c56e397fe1..c71e387e87 100644 --- a/src/plugins/cppeditor/cpppreprocessordialog.h +++ b/src/plugins/cppeditor/cpppreprocessordialog.h @@ -50,6 +50,8 @@ public: ~CppPreProcessorDialog(); int exec(); + + CppTools::ProjectPart::Ptr projectPart() const; QString additionalPreProcessorDirectives() const; private slots: diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index cbf11126bc..bbe1a481aa 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -689,12 +689,14 @@ private: /// Make sure that m_projectMutex is locked when calling this. void CppModelManager::recalculateFileToProjectParts() { + m_projectFileToProjectPart.clear(); m_fileToProjectParts.clear(); foreach (const ProjectInfo &projectInfo, m_projectToProjectsInfo) { foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) { - foreach (const ProjectFile &cxxFile, projectPart->files) { + m_projectFileToProjectPart[projectPart->projectFile] = projectPart; + foreach (const ProjectFile &cxxFile, projectPart->files) m_fileToProjectParts[cxxFile.path].append(projectPart); - } + } } } @@ -774,6 +776,11 @@ QFuture<void> CppModelManager::updateProjectInfo(const ProjectInfo &newProjectIn return updateSourceFiles(filesToReindex, ForcedProgressNotification); } +ProjectPart::Ptr CppModelManager::projectPartForProjectFile(const QString &projectFile) const +{ + return m_projectFileToProjectPart.value(projectFile); +} + QList<ProjectPart::Ptr> CppModelManager::projectPart(const QString &fileName) const { return m_fileToProjectParts.value(fileName); diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index 0bc4ee750d..3bddb955ad 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -75,6 +75,8 @@ public: virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const; virtual QFuture<void> updateProjectInfo(const ProjectInfo &newProjectInfo); + /// \return The project part with the given project file + virtual ProjectPart::Ptr projectPartForProjectFile(const QString &projectFile) const; /// \return All project parts that mention the given file name as one of the sources/headers. virtual QList<ProjectPart::Ptr> projectPart(const QString &fileName) const; /// This is a fall-back function: find all files that includes the file directly or indirectly, @@ -199,6 +201,7 @@ private: mutable QMutex m_projectMutex; QMap<ProjectExplorer::Project *, ProjectInfo> m_projectToProjectsInfo; QMap<QString, QList<CppTools::ProjectPart::Ptr> > m_fileToProjectParts; + QMap<QString, CppTools::ProjectPart::Ptr> m_projectFileToProjectPart; // The members below are cached/(re)calculated from the projects and/or their project parts bool m_dirty; QStringList m_projectFiles; diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index 49a9eea066..2cc0cbae64 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -233,6 +233,7 @@ public: virtual QList<ProjectInfo> projectInfos() const = 0; virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0; virtual QFuture<void> updateProjectInfo(const ProjectInfo &pinfo) = 0; + virtual ProjectPart::Ptr projectPartForProjectFile(const QString &projectFile) const = 0; virtual QList<ProjectPart::Ptr> projectPart(const QString &fileName) const = 0; virtual QList<ProjectPart::Ptr> projectPartFromDependencies(const QString &fileName) const = 0; virtual ProjectPart::Ptr fallbackProjectPart() const = 0; |