fix: cppparser : #included files not correctly handled

refactor project options -> file page
This commit is contained in:
Roy Qu 2024-04-06 04:03:14 +08:00
parent 29ed064b91
commit 762c27b860
3 changed files with 23 additions and 26 deletions

View File

@ -810,22 +810,28 @@ void CppPreprocessor::openInclude(QString fileName)
fileName.squeeze();
}
if (mIncludes.size()>0) {
PParsedFile topFile = mIncludes.front();
if (topFile->fileIncludes->includeFiles.contains(fileName)) {
PParsedFile innerMostFile = mIncludes.back();
innerMostFile->fileIncludes->includeFiles.insert(fileName, false);
return; //already included
}
// PParsedFile topFile = mIncludes.front();
// if (topFile->fileIncludes->includeFiles.contains(fileName)) {
// PParsedFile innerMostFile = mIncludes.back();
// innerMostFile->fileIncludes->includeFiles.insert(fileName, false);
// return; //already included
// }
bool alreadyIncluded = false;
for (PParsedFile& parsedFile:mIncludes) {
if (parsedFile->fileIncludes->includeFiles.contains(fileName)) {
alreadyIncluded = true;
continue;
}
parsedFile->fileIncludes->includeFiles.insert(fileName,false);
}
// Backup old position if we're entering a new file
PParsedFile innerMostFile = mIncludes.back();
innerMostFile->index = mIndex;
innerMostFile->branches = mBranchResults.count();
innerMostFile->fileIncludes->includeFiles.insert(fileName,true);
innerMostFile->fileIncludes->directIncludes.append(fileName);
if (alreadyIncluded)
return;
// Backup old position if we're entering a new file
innerMostFile->index = mIndex;
innerMostFile->branches = mBranchResults.count();
}
// // Add the new file to the includes of the current file

View File

@ -34,6 +34,13 @@ ProjectFilesWidget::~ProjectFilesWidget()
void ProjectFilesWidget::doLoad()
{
if (ui->cbEncoding->count()>0) {
if (pMainWindow->project()->options().encoding==ENCODING_SYSTEM_DEFAULT) {
ui->cbEncoding->setItemText(0,tr("Project(%1)").arg(tr("ANSI")));
} else {
ui->cbEncoding->setItemText(0,tr("Project(%1)").arg(QString(pMainWindow->project()->options().encoding)));
}
}
ui->treeProject->expandAll();
ui->grpFileOptions->setEnabled(false);
}
@ -274,19 +281,6 @@ void ProjectFilesWidget::init()
SettingsWidget::init();
}
void ProjectFilesWidget::showEvent(QShowEvent *event)
{
if (ui->cbEncoding->count()>0) {
if (pMainWindow->project()->options().encoding==ENCODING_SYSTEM_DEFAULT) {
ui->cbEncoding->setItemText(0,tr("Project(%1)").arg(tr("ANSI")));
} else {
ui->cbEncoding->setItemText(0,tr("Project(%1)").arg(QString(pMainWindow->project()->options().encoding)));
}
}
SettingsWidget::showEvent(event);
}
void ProjectFilesWidget::on_cbEncodingDetail_currentTextChanged(const QString &)
{
PProjectUnit unit = currentUnit();

View File

@ -65,9 +65,6 @@ private slots:
public:
void init() override;
// QWidget interface
protected:
void showEvent(QShowEvent *event) override;
};
#endif // PROJECTFILESWIDGET_H