diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index 3fc051c5399..3e80c87b679 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -223,7 +223,7 @@ BookmarkView::BookmarkView(BookmarkManager *manager) : setItemDelegate(new BookmarkDelegate(this)); setFrameStyle(QFrame::NoFrame); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setFocusPolicy(Qt::NoFocus); + setAttribute(Qt::WA_MacShowFocusRect, false); setSelectionModel(manager->selectionModel()); setSelectionMode(QAbstractItemView::SingleSelection); setSelectionBehavior(QAbstractItemView::SelectRows); diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 1064d308243..28cbac588c8 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -382,7 +382,10 @@ void BuildDirManager::extractData() m_files.append(cbpparser.cmakeFileList()); foreach (const ProjectExplorer::FileNode *node, cbpparser.cmakeFileList()) m_cmakeFiles.insert(node->filePath()); - } else { + } + + // Make sure the top cmakelists.txt file is always listed: + if (!Utils::contains(m_files, [topCMake](ProjectExplorer::FileNode *fn) { return fn->filePath() == topCMake; })) { m_files.append(new ProjectExplorer::FileNode(topCMake, ProjectExplorer::ProjectFileType, false)); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index a013083c572..bbc006607fb 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -193,7 +193,7 @@ FileName CMakeBuildConfiguration::shadowBuildDirectory(const FileName &projectFi return FileName(); const QString projectName = projectFilePath.parentDir().fileName(); - ProjectMacroExpander expander(projectName, k, bcName, buildType); + ProjectMacroExpander expander(projectFilePath.toString(), projectName, k, bcName, buildType); QDir projectDir = QDir(Project::projectDirectory(projectFilePath).toString()); QString buildPath = expander.expand(Core::DocumentManager::buildDirectory()); return FileName::fromUserInput(projectDir.absoluteFilePath(buildPath)); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 389f73d3de7..951c81751ea 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -105,6 +105,7 @@ CMakeProject::~CMakeProject() { setRootProjectNode(nullptr); m_codeModelFuture.cancel(); + qDeleteAll(m_watchedFiles); qDeleteAll(m_extraCompilers); } diff --git a/src/plugins/nim/project/nimbuildconfigurationfactory.cpp b/src/plugins/nim/project/nimbuildconfigurationfactory.cpp index bd75e16c7c4..44485c664ae 100644 --- a/src/plugins/nim/project/nimbuildconfigurationfactory.cpp +++ b/src/plugins/nim/project/nimbuildconfigurationfactory.cpp @@ -180,7 +180,7 @@ FileName NimBuildConfigurationFactory::defaultBuildDirectory(const Kit *k, { QFileInfo projectFileInfo(projectFilePath); - ProjectMacroExpander expander(projectFileInfo.baseName(), k, bc, buildType); + ProjectMacroExpander expander(projectFilePath, projectFileInfo.baseName(), k, bc, buildType); QString buildDirectory = expander.expand(Core::DocumentManager::buildDirectory()); if (FileUtils::isAbsolutePath(buildDirectory)) diff --git a/src/plugins/projectexplorer/projectmacroexpander.cpp b/src/plugins/projectexplorer/projectmacroexpander.cpp index 9bffc43b9bd..83aaf2d5fbf 100644 --- a/src/plugins/projectexplorer/projectmacroexpander.cpp +++ b/src/plugins/projectexplorer/projectmacroexpander.cpp @@ -29,10 +29,14 @@ namespace ProjectExplorer { -ProjectMacroExpander::ProjectMacroExpander(const QString &projectName, +ProjectMacroExpander::ProjectMacroExpander(const QString &mainFilePath, const QString &projectName, const Kit *kit, const QString &bcName, BuildConfiguration::BuildType buildType) { + registerFileVariables(Constants::VAR_CURRENTPROJECT_PREFIX, + QCoreApplication::translate("ProjectExplorer", "Main file of current project"), + [mainFilePath]() -> QString { return mainFilePath; }); + registerVariable(Constants::VAR_CURRENTPROJECT_NAME, QCoreApplication::translate("ProjectExplorer", "Name of current project"), [projectName] { return projectName; }); diff --git a/src/plugins/projectexplorer/projectmacroexpander.h b/src/plugins/projectexplorer/projectmacroexpander.h index e36d0bf98d2..351081c97ed 100644 --- a/src/plugins/projectexplorer/projectmacroexpander.h +++ b/src/plugins/projectexplorer/projectmacroexpander.h @@ -37,8 +37,8 @@ class Kit; class PROJECTEXPLORER_EXPORT ProjectMacroExpander : public Utils::MacroExpander { public: - ProjectMacroExpander(const QString &projectName, const Kit *kit, const QString &bcName, - BuildConfiguration::BuildType buildType); + ProjectMacroExpander(const QString &mainFilePath, const QString &projectName, const Kit *kit, + const QString &bcName, BuildConfiguration::BuildType buildType); }; } // namespace ProjectExplorer diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index f5c4f126425..ba558f4d805 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -398,7 +398,7 @@ static Utils::FileName defaultBuildDirectory(const QString &projectFilePath, con BuildConfiguration::BuildType buildType) { const QString projectName = QFileInfo(projectFilePath).completeBaseName(); - ProjectMacroExpander expander(projectName, k, bcName, buildType); + ProjectMacroExpander expander(projectFilePath, projectName, k, bcName, buildType); QString projectDir = Project::projectDirectory(Utils::FileName::fromString(projectFilePath)).toString(); QString buildPath = expander.expand(Core::DocumentManager::buildDirectory()); return Utils::FileName::fromString(Utils::FileUtils::resolvePath(projectDir, buildPath)); diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 2981f6e7ebd..86928ce9c94 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -78,7 +78,7 @@ QString QmakeBuildConfiguration::shadowBuildDirectory(const QString &proFilePath return QString(); const QString projectName = QFileInfo(proFilePath).completeBaseName(); - ProjectMacroExpander expander(projectName, k, suffix, buildType); + ProjectMacroExpander expander(proFilePath, projectName, k, suffix, buildType); QString projectDir = Project::projectDirectory(FileName::fromString(proFilePath)).toString(); QString buildPath = expander.expand(Core::DocumentManager::buildDirectory()); return FileUtils::resolvePath(projectDir, buildPath);