forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -715,6 +715,7 @@ void CPPEditorWidget::setMimeType(const QString &mt)
|
|||||||
|
|
||||||
QSharedPointer<SnapshotUpdater> updater
|
QSharedPointer<SnapshotUpdater> updater
|
||||||
= m_modelManager->cppEditorSupport(editor())->snapshotUpdater();
|
= m_modelManager->cppEditorSupport(editor())->snapshotUpdater();
|
||||||
|
updater->setProjectPart(m_modelManager->projectPartForProjectFile(projectFile));
|
||||||
updater->setEditorDefines(additionalDirectives);
|
updater->setEditorDefines(additionalDirectives);
|
||||||
|
|
||||||
m_preprocessorButton->setProperty("highlightWidget", !additionalDirectives.trimmed().isEmpty());
|
m_preprocessorButton->setProperty("highlightWidget", !additionalDirectives.trimmed().isEmpty());
|
||||||
@@ -1994,6 +1995,7 @@ void CPPEditorWidget::showPreProcessorWidget()
|
|||||||
QSharedPointer<SnapshotUpdater> updater
|
QSharedPointer<SnapshotUpdater> updater
|
||||||
= m_modelManager->cppEditorSupport(editor())->snapshotUpdater();
|
= m_modelManager->cppEditorSupport(editor())->snapshotUpdater();
|
||||||
const QString &additionals = preProcessorDialog.additionalPreProcessorDirectives();
|
const QString &additionals = preProcessorDialog.additionalPreProcessorDirectives();
|
||||||
|
updater->setProjectPart(preProcessorDialog.projectPart());
|
||||||
updater->setEditorDefines(additionals.toUtf8());
|
updater->setEditorDefines(additionals.toUtf8());
|
||||||
updater->update(m_modelManager->workingCopy());
|
updater->update(m_modelManager->workingCopy());
|
||||||
|
|
||||||
|
@@ -112,6 +112,11 @@ int CppPreProcessorDialog::exec()
|
|||||||
return Accepted;
|
return Accepted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CppTools::ProjectPart::Ptr CppPreProcessorDialog::projectPart() const
|
||||||
|
{
|
||||||
|
return m_partAdditions[m_ui->projectComboBox->currentIndex()].projectPart;
|
||||||
|
}
|
||||||
|
|
||||||
QString CppPreProcessorDialog::additionalPreProcessorDirectives() const
|
QString CppPreProcessorDialog::additionalPreProcessorDirectives() const
|
||||||
{
|
{
|
||||||
return m_ui->editWidget->toPlainText();
|
return m_ui->editWidget->toPlainText();
|
||||||
|
@@ -50,6 +50,8 @@ public:
|
|||||||
~CppPreProcessorDialog();
|
~CppPreProcessorDialog();
|
||||||
|
|
||||||
int exec();
|
int exec();
|
||||||
|
|
||||||
|
CppTools::ProjectPart::Ptr projectPart() const;
|
||||||
QString additionalPreProcessorDirectives() const;
|
QString additionalPreProcessorDirectives() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@@ -689,12 +689,14 @@ private:
|
|||||||
/// Make sure that m_projectMutex is locked when calling this.
|
/// Make sure that m_projectMutex is locked when calling this.
|
||||||
void CppModelManager::recalculateFileToProjectParts()
|
void CppModelManager::recalculateFileToProjectParts()
|
||||||
{
|
{
|
||||||
|
m_projectFileToProjectPart.clear();
|
||||||
m_fileToProjectParts.clear();
|
m_fileToProjectParts.clear();
|
||||||
foreach (const ProjectInfo &projectInfo, m_projectToProjectsInfo) {
|
foreach (const ProjectInfo &projectInfo, m_projectToProjectsInfo) {
|
||||||
foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) {
|
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);
|
m_fileToProjectParts[cxxFile.path].append(projectPart);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -774,6 +776,11 @@ QFuture<void> CppModelManager::updateProjectInfo(const ProjectInfo &newProjectIn
|
|||||||
return updateSourceFiles(filesToReindex, ForcedProgressNotification);
|
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
|
QList<ProjectPart::Ptr> CppModelManager::projectPart(const QString &fileName) const
|
||||||
{
|
{
|
||||||
return m_fileToProjectParts.value(fileName);
|
return m_fileToProjectParts.value(fileName);
|
||||||
|
@@ -75,6 +75,8 @@ public:
|
|||||||
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const;
|
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const;
|
||||||
virtual QFuture<void> updateProjectInfo(const ProjectInfo &newProjectInfo);
|
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.
|
/// \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;
|
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,
|
/// 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;
|
mutable QMutex m_projectMutex;
|
||||||
QMap<ProjectExplorer::Project *, ProjectInfo> m_projectToProjectsInfo;
|
QMap<ProjectExplorer::Project *, ProjectInfo> m_projectToProjectsInfo;
|
||||||
QMap<QString, QList<CppTools::ProjectPart::Ptr> > m_fileToProjectParts;
|
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
|
// The members below are cached/(re)calculated from the projects and/or their project parts
|
||||||
bool m_dirty;
|
bool m_dirty;
|
||||||
QStringList m_projectFiles;
|
QStringList m_projectFiles;
|
||||||
|
@@ -233,6 +233,7 @@ public:
|
|||||||
virtual QList<ProjectInfo> projectInfos() const = 0;
|
virtual QList<ProjectInfo> projectInfos() const = 0;
|
||||||
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0;
|
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0;
|
||||||
virtual QFuture<void> updateProjectInfo(const ProjectInfo &pinfo) = 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> projectPart(const QString &fileName) const = 0;
|
||||||
virtual QList<ProjectPart::Ptr> projectPartFromDependencies(const QString &fileName) const = 0;
|
virtual QList<ProjectPart::Ptr> projectPartFromDependencies(const QString &fileName) const = 0;
|
||||||
virtual ProjectPart::Ptr fallbackProjectPart() const = 0;
|
virtual ProjectPart::Ptr fallbackProjectPart() const = 0;
|
||||||
|
Reference in New Issue
Block a user