diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index 79a59a528ca..4a132316328 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -114,8 +114,8 @@ void CMakeProjectPlugin::extensionsInitialized() void CMakeProjectPlugin::updateContextActions() { Project *project = ProjectTree::currentProject(); - Node *node = ProjectTree::currentNode(); - CMakeTargetNode *targetNode = dynamic_cast(node); + const Node *node = ProjectTree::findCurrentNode(); + const CMakeTargetNode *targetNode = dynamic_cast(node); // as targetNode can be deleted while the menu is open, we keep only the const QString targetDisplayName = targetNode ? targetNode->displayName() : QString(); CMakeProject *cmProject = dynamic_cast(project); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 1018f99b9d9..9e99b33a8c8 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -126,7 +126,7 @@ public: bool showInSimpleTree() const override { return true; } - bool supportsAction(ProjectAction action, Node *) const override + bool supportsAction(ProjectAction action, const Node *) const override { return action == AddNewFile || action == AddExistingFile diff --git a/src/plugins/modeleditor/modelsmanager.cpp b/src/plugins/modeleditor/modelsmanager.cpp index 5088f97a83a..b49c9ff2305 100644 --- a/src/plugins/modeleditor/modelsmanager.cpp +++ b/src/plugins/modeleditor/modelsmanager.cpp @@ -188,7 +188,7 @@ void ModelsManager::onAboutToShowContextMenu(ProjectExplorer::Project *project, void ModelsManager::onOpenDiagramFromProjectExplorer() { - if (ProjectExplorer::ProjectTree::instance()->currentNode() == d->contextMenuOwnerNode) { + if (ProjectExplorer::ProjectTree::findCurrentNode() == d->contextMenuOwnerNode) { qmt::MDiagram *diagram = 0; foreach (const ManagedModel &managedModel, d->managedModels) { if ((diagram = managedModel.m_documentController->pxNodeController()->findDiagramForExplorerNode(d->contextMenuOwnerNode))) { diff --git a/src/plugins/nim/project/nimprojectnode.cpp b/src/plugins/nim/project/nimprojectnode.cpp index 223c6f950db..7604fb3a6df 100644 --- a/src/plugins/nim/project/nimprojectnode.cpp +++ b/src/plugins/nim/project/nimprojectnode.cpp @@ -37,7 +37,7 @@ NimProjectNode::NimProjectNode(NimProject &project, , m_project(project) {} -bool NimProjectNode::supportsAction(ProjectAction action, Node *node) const +bool NimProjectNode::supportsAction(ProjectAction action, const Node *node) const { switch (node->nodeType()) { case NodeType::File: diff --git a/src/plugins/nim/project/nimprojectnode.h b/src/plugins/nim/project/nimprojectnode.h index 05270846f96..317d4be5554 100644 --- a/src/plugins/nim/project/nimprojectnode.h +++ b/src/plugins/nim/project/nimprojectnode.h @@ -38,7 +38,7 @@ class NimProjectNode : public ProjectExplorer::ProjectNode public: NimProjectNode(NimProject &project, const Utils::FileName &projectFilePath); - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const override; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; bool addFiles(const QStringList &filePaths, QStringList *) override; bool removeFiles(const QStringList &filePaths, QStringList *) override; bool deleteFiles(const QStringList &) override; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 15be59a9f73..1e3d4c242a9 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2154,11 +2154,11 @@ QList > ProjectExplorerPluginPrivate::recentProjects() c }); } -static QString pathOrDirectoryFor(Node *node, bool dir) +static QString pathOrDirectoryFor(const Node *node, bool dir) { Utils::FileName path = node->filePath(); QString location; - FolderNode *folder = node->asFolderNode(); + const FolderNode *folder = node->asFolderNode(); if (node->nodeType() == NodeType::VirtualFolder && folder) { // Virtual Folder case // If there are files directly below or no subfolders, take the folder path @@ -2192,12 +2192,12 @@ static QString pathOrDirectoryFor(Node *node, bool dir) return location; } -static QString pathFor(Node *node) +static QString pathFor(const Node *node) { return pathOrDirectoryFor(node, false); } -static QString directoryFor(Node *node) +static QString directoryFor(const Node *node) { return pathOrDirectoryFor(node, true); } @@ -2448,8 +2448,8 @@ void ProjectExplorerPlugin::buildProject(Project *p) void ProjectExplorerPluginPrivate::runProjectContextMenu() { - Node *node = ProjectTree::currentNode(); - ProjectNode *projectNode = node ? node->asProjectNode() : nullptr; + const Node *node = ProjectTree::findCurrentNode(); + const ProjectNode *projectNode = node ? node->asProjectNode() : nullptr; if (projectNode == ProjectTree::currentProject()->rootProjectNode() || !projectNode) { m_instance->runProject(ProjectTree::currentProject(), Constants::NORMAL_RUN_MODE); } else { @@ -2985,14 +2985,14 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() runMenu->menu()->clear(); runMenu->menu()->menuAction()->setVisible(false); - Node *currentNode = ProjectTree::currentNode(); + const Node *currentNode = ProjectTree::findCurrentNode(); if (currentNode && currentNode->managingProject()) { ProjectNode *pn; - if (ContainerNode *cn = currentNode->asContainerNode()) + if (const ContainerNode *cn = currentNode->asContainerNode()) pn = cn->rootProjectNode(); else - pn = currentNode->asProjectNode(); + pn = const_cast(currentNode->asProjectNode()); if (pn) { if (ProjectTree::currentProject() && pn == ProjectTree::currentProject()->rootProjectNode()) { @@ -3047,7 +3047,7 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() m_removeFileAction->setVisible(!enableDelete || enableRemove); m_renameFileAction->setEnabled(supports(Rename)); const bool currentNodeIsTextFile = isTextFile( - ProjectTree::currentNode()->filePath().toString()); + currentNode->filePath().toString()); m_diffFileAction->setEnabled(isDiffServiceAvailable() && currentNodeIsTextFile && TextEditor::TextDocument::currentTextDocument()); @@ -3055,7 +3055,7 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() m_duplicateFileAction->setEnabled(supports(DuplicateFile)); EditorManager::populateOpenWithMenu(m_openWithMenu, - ProjectTree::currentNode()->filePath().toString()); + currentNode->filePath().toString()); } if (supports(HidePathActions)) { @@ -3096,7 +3096,7 @@ void ProjectExplorerPluginPrivate::updateLocationSubMenus() QTC_CHECK(folderMenu->actions().isEmpty()); const FolderNode *const fn - = ProjectTree::currentNode() ? ProjectTree::currentNode()->asFolderNode() : nullptr; + = ProjectTree::findCurrentNode() ? ProjectTree::findCurrentNode()->asFolderNode() : nullptr; const QList locations = fn ? fn->locationInfo() : QList(); @@ -3124,11 +3124,12 @@ void ProjectExplorerPluginPrivate::updateLocationSubMenus() void ProjectExplorerPluginPrivate::addNewFile() { - QTC_ASSERT(ProjectTree::currentNode(), return); - QString location = directoryFor(ProjectTree::currentNode()); + Node* currentNode = ProjectTree::findCurrentNode(); + QTC_ASSERT(currentNode, return); + QString location = directoryFor(currentNode); QVariantMap map; - map.insert(QLatin1String(Constants::PREFERRED_PROJECT_NODE), QVariant::fromValue(ProjectTree::currentNode())); + map.insert(QLatin1String(Constants::PREFERRED_PROJECT_NODE), QVariant::fromValue(currentNode)); if (ProjectTree::currentProject()) { QList profileIds = Utils::transform(ProjectTree::currentProject()->targets(), &Target::id); map.insert(QLatin1String(Constants::PROJECT_KIT_IDS), QVariant::fromValue(profileIds)); @@ -3143,8 +3144,8 @@ void ProjectExplorerPluginPrivate::addNewFile() void ProjectExplorerPluginPrivate::addNewSubproject() { - QTC_ASSERT(ProjectTree::currentNode(), return); - Node *currentNode = ProjectTree::currentNode(); + Node* currentNode = ProjectTree::findCurrentNode(); + QTC_ASSERT(currentNode, return); QString location = directoryFor(currentNode); if (currentNode->nodeType() == NodeType::Project @@ -3170,13 +3171,13 @@ void ProjectExplorerPluginPrivate::addNewSubproject() void ProjectExplorerPluginPrivate::handleAddExistingFiles() { - Node *node = ProjectTree::currentNode(); + Node *node = ProjectTree::findCurrentNode(); FolderNode *folderNode = node ? node->asFolderNode() : nullptr; QTC_ASSERT(folderNode, return); QStringList fileNames = QFileDialog::getOpenFileNames(ICore::mainWindow(), - tr("Add Existing Files"), directoryFor(ProjectTree::currentNode())); + tr("Add Existing Files"), directoryFor(node)); if (fileNames.isEmpty()) return; @@ -3185,12 +3186,12 @@ void ProjectExplorerPluginPrivate::handleAddExistingFiles() void ProjectExplorerPluginPrivate::addExistingDirectory() { - Node *node = ProjectTree::currentNode(); + Node *node = ProjectTree::findCurrentNode(); FolderNode *folderNode = node ? node->asFolderNode() : nullptr; QTC_ASSERT(folderNode, return); - SelectableFilesDialogAddDirectory dialog(Utils::FileName::fromString(directoryFor(ProjectTree::currentNode())), + SelectableFilesDialogAddDirectory dialog(Utils::FileName::fromString(directoryFor(node)), Utils::FileNameList(), ICore::mainWindow()); dialog.setAddFileFilter(folderNode->addFileFilter()); @@ -3225,7 +3226,7 @@ void ProjectExplorerPlugin::addExistingFiles(FolderNode *folderNode, const QStri void ProjectExplorerPluginPrivate::removeProject() { - Node *node = ProjectTree::currentNode(); + Node *node = ProjectTree::findCurrentNode(); if (!node) return; ProjectNode *subProjectNode = node->managingProject(); @@ -3242,31 +3243,35 @@ void ProjectExplorerPluginPrivate::removeProject() void ProjectExplorerPluginPrivate::openFile() { - QTC_ASSERT(ProjectTree::currentNode(), return); - EditorManager::openEditor(ProjectTree::currentNode()->filePath().toString()); + const Node *currentNode = ProjectTree::findCurrentNode(); + QTC_ASSERT(currentNode, return); + EditorManager::openEditor(currentNode->filePath().toString()); } void ProjectExplorerPluginPrivate::searchOnFileSystem() { - QTC_ASSERT(ProjectTree::currentNode(), return); - TextEditor::FindInFiles::findOnFileSystem(pathFor(ProjectTree::currentNode())); + const Node *currentNode = ProjectTree::findCurrentNode(); + QTC_ASSERT(currentNode, return); + TextEditor::FindInFiles::findOnFileSystem(pathFor(currentNode)); } void ProjectExplorerPluginPrivate::showInGraphicalShell() { - QTC_ASSERT(ProjectTree::currentNode(), return); - FileUtils::showInGraphicalShell(ICore::mainWindow(), pathFor(ProjectTree::currentNode())); + Node *currentNode = ProjectTree::findCurrentNode(); + QTC_ASSERT(currentNode, return); + FileUtils::showInGraphicalShell(ICore::mainWindow(), pathFor(currentNode)); } void ProjectExplorerPluginPrivate::openTerminalHere() { - QTC_ASSERT(ProjectTree::currentNode(), return); - FileUtils::openTerminal(directoryFor(ProjectTree::currentNode())); + const Node *currentNode = ProjectTree::findCurrentNode(); + QTC_ASSERT(currentNode, return); + FileUtils::openTerminal(directoryFor(currentNode)); } void ProjectExplorerPluginPrivate::removeFile() { - Node *currentNode = ProjectTree::currentNode(); + const Node *currentNode = ProjectTree::findCurrentNode(); QTC_ASSERT(currentNode && currentNode->nodeType() == NodeType::File, return); const Utils::FileName filePath = currentNode->filePath(); @@ -3276,7 +3281,7 @@ void ProjectExplorerPluginPrivate::removeFile() const bool deleteFile = removeFileDialog.isDeleteFileChecked(); // Re-read the current node, in case the project is re-parsed while the dialog is open - if (currentNode != ProjectTree::currentNode()) { + if (currentNode != ProjectTree::findCurrentNode()) { currentNode = ProjectTreeWidget::nodeForFile(filePath); QTC_ASSERT(currentNode && currentNode->nodeType() == NodeType::File, return); } @@ -3301,7 +3306,7 @@ void ProjectExplorerPluginPrivate::removeFile() void ProjectExplorerPluginPrivate::duplicateFile() { - Node *currentNode = ProjectTree::currentNode(); + Node *currentNode = ProjectTree::findCurrentNode(); QTC_ASSERT(currentNode && currentNode->nodeType() == NodeType::File, return); FileNode *fileNode = currentNode->asFileNode(); @@ -3332,7 +3337,7 @@ void ProjectExplorerPluginPrivate::duplicateFile() void ProjectExplorerPluginPrivate::deleteFile() { - Node *currentNode = ProjectTree::currentNode(); + Node *currentNode = ProjectTree::findCurrentNode(); QTC_ASSERT(currentNode && currentNode->nodeType() == NodeType::File, return); FileNode *fileNode = currentNode->asFileNode(); @@ -3393,7 +3398,7 @@ void ProjectExplorerPluginPrivate::handleDiffFile() return; // current item's file - Node *currentNode = ProjectTree::currentNode(); + Node *currentNode = ProjectTree::findCurrentNode(); QTC_ASSERT(currentNode && currentNode->nodeType() == NodeType::File, return); FileNode *fileNode = currentNode->asFileNode(); diff --git a/src/plugins/projectexplorer/projectmodels.h b/src/plugins/projectexplorer/projectmodels.h index 1a1d02b620a..e64bbd7102d 100644 --- a/src/plugins/projectexplorer/projectmodels.h +++ b/src/plugins/projectexplorer/projectmodels.h @@ -49,7 +49,7 @@ class WrapperNode : public Utils::TypedTreeItem { public: explicit WrapperNode(Node *node) : m_node(node) {} - QPointer m_node; + Node *m_node = nullptr; }; class FlatModel : public Utils::TreeModel diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 9641c147ec5..0ba7c5cac93 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -248,7 +248,7 @@ bool Node::isGenerated() const return (m_flags & FlagIsGenerated) == FlagIsGenerated; } -bool Node::supportsAction(ProjectAction, Node *) const +bool Node::supportsAction(ProjectAction, const Node *) const { return false; } @@ -403,7 +403,7 @@ FileNode::scanForFilesWithVersionControls(const Utils::FileName &directory, return scanForFilesRecursively(directory, factory, visited, future, 0.0, 1000000.0, versionControls); } -bool FileNode::supportsAction(ProjectAction action, Node *node) const +bool FileNode::supportsAction(ProjectAction action, const Node *node) const { if (action == InheritedFromParent) return true; @@ -653,7 +653,7 @@ QString FolderNode::addFileFilter() const return fn ? fn->addFileFilter() : QString(); } -bool FolderNode::supportsAction(ProjectAction action, Node *node) const +bool FolderNode::supportsAction(ProjectAction action, const Node *node) const { if (action == InheritedFromParent) return true; @@ -831,7 +831,7 @@ bool ProjectNode::renameFile(const QString &filePath, const QString &newFilePath return false; } -bool ProjectNode::supportsAction(ProjectAction, Node *) const +bool ProjectNode::supportsAction(ProjectAction, const Node *) const { return false; } @@ -886,9 +886,9 @@ QString ContainerNode::displayName() const return name; } -bool ContainerNode::supportsAction(ProjectAction action, Node *node) const +bool ContainerNode::supportsAction(ProjectAction action, const Node *node) const { - Node *rootNode = m_project->rootProjectNode(); + const Node *rootNode = m_project->rootProjectNode(); return rootNode && rootNode->supportsAction(action, node); } diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index d686bf41381..c6158af3936 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -29,7 +29,6 @@ #include #include -#include #include #include @@ -98,9 +97,8 @@ class ProjectNode; class ContainerNode; // Documentation inside. -class PROJECTEXPLORER_EXPORT Node : public QObject +class PROJECTEXPLORER_EXPORT Node { - Q_OBJECT public: enum PriorityLevel { DefaultPriority = 0, @@ -133,7 +131,7 @@ public: bool listInProject() const; bool isGenerated() const; - virtual bool supportsAction(ProjectAction action, Node *node) const; + virtual bool supportsAction(ProjectAction action, const Node *node) const; void setEnabled(bool enabled); void setAbsoluteFilePathAndLine(const Utils::FileName &filePath, int line); @@ -199,7 +197,7 @@ public: const std::function factory, const QList &versionControls, QFutureInterface> *future = nullptr); - bool supportsAction(ProjectAction action, Node *node) const override; + bool supportsAction(ProjectAction action, const Node *node) const override; private: FileType m_fileType; @@ -257,7 +255,7 @@ public: virtual QString addFileFilter() const; - bool supportsAction(ProjectAction action, Node *node) const override; + bool supportsAction(ProjectAction action, const Node *node) const override; virtual bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); virtual bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); @@ -323,7 +321,7 @@ public: bool deleteFiles(const QStringList &filePaths) override; bool canRenameFile(const QString &filePath, const QString &newFilePath) override; bool renameFile(const QString &filePath, const QString &newFilePath) override; - bool supportsAction(ProjectAction action, Node *node) const override; + bool supportsAction(ProjectAction action, const Node *node) const override; // by default returns false virtual bool deploysFolder(const QString &folder) const; @@ -345,7 +343,7 @@ public: ContainerNode(Project *project); QString displayName() const final; - bool supportsAction(ProjectAction action, Node *node) const final; + bool supportsAction(ProjectAction action, const Node *node) const final; ContainerNode *asContainerNode() final { return this; } const ContainerNode *asContainerNode() const final { return this; } diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index 4d6c596377a..4461b20c79d 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -103,8 +103,9 @@ Project *ProjectTree::currentProject() return s_instance->m_currentProject; } -Node *ProjectTree::currentNode() +Node *ProjectTree::findCurrentNode() { + s_instance->update(); return s_instance->m_currentNode; } diff --git a/src/plugins/projectexplorer/projecttree.h b/src/plugins/projectexplorer/projecttree.h index f1dd160c28e..87bcb7216cd 100644 --- a/src/plugins/projectexplorer/projecttree.h +++ b/src/plugins/projectexplorer/projecttree.h @@ -51,7 +51,7 @@ public: static ProjectTree *instance(); static Project *currentProject(); - static Node *currentNode(); + static Node *findCurrentNode(); // Integration with ProjectTreeWidget static void registerWidget(Internal::ProjectTreeWidget *widget); @@ -102,7 +102,7 @@ private: static ProjectTree *s_instance; QList> m_projectTreeWidgets; QVector m_treeManagers; - QPointer m_currentNode; + Node *m_currentNode = nullptr; Project *m_currentProject = nullptr; Internal::ProjectTreeWidget *m_focusForContextMenu = nullptr; Core::Context m_lastProjectContext; diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 3cd66273016..81821e981cf 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -279,7 +279,7 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent) : QWidget(parent) connect(m_toggleSync, &QAbstractButton::clicked, this, &ProjectTreeWidget::toggleAutoSynchronization); - setCurrentItem(ProjectTree::currentNode()); + setCurrentItem(ProjectTree::findCurrentNode()); setAutoSynchronization(true); m_projectTreeWidgets << this; diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index e3dd87e23ec..fcbf40e4961 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -67,20 +67,20 @@ static QIcon generateIcon(const QString &overlay) namespace QbsProjectManager { namespace Internal { -static QbsProjectNode *parentQbsProjectNode(ProjectExplorer::Node *node) +static const QbsProjectNode *parentQbsProjectNode(const ProjectExplorer::Node *node) { - for (ProjectExplorer::FolderNode *pn = node->managingProject(); pn; pn = pn->parentProjectNode()) { - QbsProjectNode *prjNode = dynamic_cast(pn); + for (const ProjectExplorer::FolderNode *pn = node->managingProject(); pn; pn = pn->parentProjectNode()) { + const QbsProjectNode *prjNode = dynamic_cast(pn); if (prjNode) return prjNode; } return 0; } -static QbsProductNode *parentQbsProductNode(ProjectExplorer::Node *node) +static const QbsProductNode *parentQbsProductNode(const ProjectExplorer::Node *node) { for (; node; node = node->parentFolderNode()) { - QbsProductNode *prdNode = dynamic_cast(node); + const QbsProductNode *prdNode = dynamic_cast(node); if (prdNode) return prdNode; } @@ -225,7 +225,7 @@ public: }; -static bool supportsNodeAction(ProjectAction action, Node *node) +static bool supportsNodeAction(ProjectAction action, const Node *node) { const QbsProject * const project = parentQbsProjectNode(node)->project(); if (!project->isProjectEditable()) @@ -270,7 +270,7 @@ QbsFolderNode::QbsFolderNode(const Utils::FileName &folderPath, ProjectExplorer: { } -bool QbsFolderNode::supportsAction(ProjectAction action, Node *node) const +bool QbsFolderNode::supportsAction(ProjectAction action, const Node *node) const { return supportsNodeAction(action, node); } @@ -302,7 +302,7 @@ QbsGroupNode::QbsGroupNode(const qbs::GroupData &grp, const QString &productPath m_qbsGroupData = grp; } -bool QbsGroupNode::supportsAction(ProjectAction action, Node *node) const +bool QbsGroupNode::supportsAction(ProjectAction action, const Node *node) const { if (action == AddNewFile || action == AddExistingFile) return true; @@ -316,13 +316,13 @@ bool QbsGroupNode::addFiles(const QStringList &filePaths, QStringList *notAdded) if (!notAdded) notAdded = ¬AddedDummy; - QbsProjectNode *prjNode = parentQbsProjectNode(this); + const QbsProjectNode *prjNode = parentQbsProjectNode(this); if (!prjNode || !prjNode->qbsProject().isValid()) { *notAdded += filePaths; return false; } - QbsProductNode *prdNode = parentQbsProductNode(this); + const QbsProductNode *prdNode = parentQbsProductNode(this); if (!prdNode || !prdNode->qbsProductData().isValid()) { *notAdded += filePaths; return false; @@ -338,13 +338,13 @@ bool QbsGroupNode::removeFiles(const QStringList &filePaths, QStringList *notRem if (!notRemoved) notRemoved = ¬RemovedDummy; - QbsProjectNode *prjNode = parentQbsProjectNode(this); + const QbsProjectNode *prjNode = parentQbsProjectNode(this); if (!prjNode || !prjNode->qbsProject().isValid()) { *notRemoved += filePaths; return false; } - QbsProductNode *prdNode = parentQbsProductNode(this); + const QbsProductNode *prdNode = parentQbsProductNode(this); if (!prdNode || !prdNode->qbsProductData().isValid()) { *notRemoved += filePaths; return false; @@ -356,10 +356,10 @@ bool QbsGroupNode::removeFiles(const QStringList &filePaths, QStringList *notRem bool QbsGroupNode::renameFile(const QString &filePath, const QString &newFilePath) { - QbsProjectNode * const prjNode = parentQbsProjectNode(this); + const QbsProjectNode *prjNode = parentQbsProjectNode(this); if (!prjNode || !prjNode->qbsProject().isValid()) return false; - QbsProductNode * const prdNode = parentQbsProductNode(this); + const QbsProductNode *prdNode = parentQbsProductNode(this); if (!prdNode || !prdNode->qbsProductData().isValid()) return false; @@ -384,7 +384,7 @@ bool QbsProductNode::showInSimpleTree() const return true; } -bool QbsProductNode::supportsAction(ProjectAction action, Node *node) const +bool QbsProductNode::supportsAction(ProjectAction action, const Node *node) const { if (action == AddNewFile || action == AddExistingFile) return true; @@ -398,7 +398,7 @@ bool QbsProductNode::addFiles(const QStringList &filePaths, QStringList *notAdde if (!notAdded) notAdded = ¬AddedDummy; - QbsProjectNode *prjNode = parentQbsProjectNode(this); + const QbsProjectNode *prjNode = parentQbsProjectNode(this); if (!prjNode || !prjNode->qbsProject().isValid()) { *notAdded += filePaths; return false; @@ -418,7 +418,7 @@ bool QbsProductNode::removeFiles(const QStringList &filePaths, QStringList *notR if (!notRemoved) notRemoved = ¬RemovedDummy; - QbsProjectNode *prjNode = parentQbsProjectNode(this); + const QbsProjectNode *prjNode = parentQbsProjectNode(this); if (!prjNode || !prjNode->qbsProject().isValid()) { *notRemoved += filePaths; return false; @@ -435,7 +435,7 @@ bool QbsProductNode::removeFiles(const QStringList &filePaths, QStringList *notR bool QbsProductNode::renameFile(const QString &filePath, const QString &newFilePath) { - QbsProjectNode * const prjNode = parentQbsProjectNode(this); + const QbsProjectNode * prjNode = parentQbsProjectNode(this); if (!prjNode || !prjNode->qbsProject().isValid()) return false; const qbs::GroupData grp = findMainQbsGroup(m_qbsProductData); diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index 904851bc810..f6d02f16b57 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -55,7 +55,7 @@ public: const QString &displayName); private: - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const final; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const final; }; // --------------------------------------------------------------------------- @@ -81,7 +81,7 @@ class QbsGroupNode : public QbsBaseProjectNode public: QbsGroupNode(const qbs::GroupData &grp, const QString &productPath); - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const final; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const final; bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; bool renameFile(const QString &filePath, const QString &newFilePath) override; @@ -103,7 +103,7 @@ public: explicit QbsProductNode(const qbs::ProductData &prd); bool showInSimpleTree() const override; - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const final; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const final; bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; bool renameFile(const QString &filePath, const QString &newFilePath) override; diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index 43f6e49050a..52478b78282 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -304,14 +304,14 @@ void QbsProjectManagerPlugin::projectWasAdded(Project *project) void QbsProjectManagerPlugin::updateContextActions() { QbsProject *project = qobject_cast(ProjectTree::currentProject()); - Node *node = ProjectTree::currentNode(); + const Node *node = ProjectTree::findCurrentNode(); bool isEnabled = !BuildManager::isBuilding(project) && project && !project->isParsing() && node && node->isEnabled(); bool isFile = project && node && (node->nodeType() == NodeType::File); - bool isProduct = project && node && dynamic_cast(node); - QbsProjectNode *subproject = dynamic_cast(node); + const bool isProduct = project && node && dynamic_cast(node); + const QbsProjectNode *subproject = dynamic_cast(node); bool isSubproject = project && subproject && subproject != project->rootProjectNode(); m_reparseQbsCtx->setEnabled(isEnabled); @@ -407,7 +407,7 @@ void QbsProjectManagerPlugin::projectChanged() void QbsProjectManagerPlugin::buildFileContextMenu() { - Node *node = ProjectTree::currentNode(); + const Node *node = ProjectTree::findCurrentNode(); QTC_ASSERT(node, return); QbsProject *project = dynamic_cast(ProjectTree::currentProject()); QTC_ASSERT(project, return); @@ -444,12 +444,12 @@ void QbsProjectManagerPlugin::rebuildProductContextMenu() void QbsProjectManagerPlugin::runStepsForProductContextMenu(const QList &stepTypes) { - Node *node = ProjectTree::currentNode(); + const Node *node = ProjectTree::findCurrentNode(); QTC_ASSERT(node, return); QbsProject *project = dynamic_cast(ProjectTree::currentProject()); QTC_ASSERT(project, return); - const QbsProductNode * const productNode = dynamic_cast(node); + const QbsProductNode * const productNode = dynamic_cast(node); QTC_ASSERT(productNode, return); runStepsForProducts(project, {QbsProject::uniqueProductName(productNode->qbsProductData())}, @@ -509,12 +509,12 @@ void QbsProjectManagerPlugin::rebuildSubprojectContextMenu() void QbsProjectManagerPlugin::runStepsForSubprojectContextMenu(const QList &stepTypes) { - Node *node = ProjectTree::currentNode(); + const Node *node = ProjectTree::findCurrentNode(); QTC_ASSERT(node, return); QbsProject *project = dynamic_cast(ProjectTree::currentProject()); QTC_ASSERT(project, return); - QbsProjectNode *subProject = dynamic_cast(node); + const QbsProjectNode *subProject = dynamic_cast(node); QTC_ASSERT(subProject, return); QStringList toBuild; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 007e47b0180..f19723df952 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -74,12 +74,12 @@ QmakeProFileNode *QmakePriFileNode::proFileNode() const return m_qmakeProFileNode; } -bool QmakePriFileNode::supportsAction(ProjectAction action, Node *node) const +bool QmakePriFileNode::supportsAction(ProjectAction action, const Node *node) const { if (action == Rename || action == DuplicateFile) { - FileNode *fileNode = node->asFileNode(); + const FileNode *fileNode = node->asFileNode(); return (fileNode && fileNode->fileType() != FileType::Project) - || dynamic_cast(node); + || dynamic_cast(node); } const FolderNode *folderNode = this; @@ -109,7 +109,7 @@ bool QmakePriFileNode::supportsAction(ProjectAction action, Node *node) const bool addExistingFiles = true; if (node->nodeType() == NodeType::VirtualFolder) { // A virtual folder, we do what the projectexplorer does - FolderNode *folder = node->asFolderNode(); + const FolderNode *folder = node->asFolderNode(); if (folder) { QStringList list; foreach (FolderNode *f, folder->folderNodes()) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 719e42a05a1..aca17e18a29 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -47,7 +47,7 @@ public: QmakePriFile *priFile() const; // ProjectNode interface - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const override; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; bool showInSimpleTree() const override { return false; } diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp index 666ec0ce51a..bfcc2f3d50c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp @@ -55,7 +55,7 @@ namespace QmakeProjectManager { Node *QmakeManager::contextNode() { - return ProjectTree::currentNode(); + return ProjectTree::findCurrentNode(); } Project *QmakeManager::contextProject() diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp index 5c18900931c..ee18fd8e9f9 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp @@ -326,22 +326,22 @@ void QmakeProjectManagerPlugin::updateRunQMakeAction() void QmakeProjectManagerPlugin::updateContextActions() { - Node *node = ProjectTree::currentNode(); + const Node *node = ProjectTree::findCurrentNode(); Project *project = ProjectTree::currentProject(); - ContainerNode *containerNode = node ? node->asContainerNode() : nullptr; - QmakeProFileNode *proFileNode = dynamic_cast(containerNode ? containerNode->rootProjectNode() : node); + const ContainerNode *containerNode = node ? node->asContainerNode() : nullptr; + const QmakeProFileNode *proFileNode = dynamic_cast(containerNode ? containerNode->rootProjectNode() : node); m_addLibraryActionContextMenu->setEnabled(proFileNode); QmakeProject *qmakeProject = qobject_cast(QmakeManager::contextProject()); QmakeProFileNode *subProjectNode = nullptr; if (node) { - auto subPriFileNode = dynamic_cast(node); + auto subPriFileNode = dynamic_cast(node); if (!subPriFileNode) subPriFileNode = dynamic_cast(node->parentProjectNode()); subProjectNode = subPriFileNode ? subPriFileNode->proFileNode() : nullptr; } - FileNode *fileNode = node ? node->asFileNode() : nullptr; + const FileNode *fileNode = node ? node->asFileNode() : nullptr; bool buildFilePossible = subProjectNode && fileNode && (fileNode->fileType() == FileType::Source); bool subProjectActionsVisible = false; diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index ecf191a02f4..dae7b4b4f27 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -57,13 +57,13 @@ bool QmlProjectNode::showInSimpleTree() const return true; } -bool QmlProjectNode::supportsAction(ProjectAction action, Node *node) const +bool QmlProjectNode::supportsAction(ProjectAction action, const Node *node) const { if (action == AddNewFile || action == EraseFile) return true; if (action == Rename && node->nodeType() == NodeType::File) { - FileNode *fileNode = static_cast(node); + const FileNode *fileNode = dynamic_cast(node); return fileNode->fileType() != FileType::Project; } diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.h b/src/plugins/qmlprojectmanager/qmlprojectnodes.h index bc715d86f6d..35ebf428f83 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.h +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.h @@ -39,7 +39,7 @@ public: QmlProjectNode(QmlProject *project); bool showInSimpleTree() const override; - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const override; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; bool deleteFiles(const QStringList &filePaths) override; bool renameFile(const QString &filePath, const QString &newFilePath) override; diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index 75cce175429..07c532f4eff 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -245,7 +245,7 @@ void ResourceEditorPlugin::onRefresh() void ResourceEditorPlugin::addPrefixContextMenu() { - auto topLevel = dynamic_cast(ProjectTree::currentNode()); + auto topLevel = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(topLevel, return); PrefixLangDialog dialog(tr("Add Prefix"), QString(), QString(), Core::ICore::mainWindow()); if (dialog.exec() != QDialog::Accepted) @@ -258,7 +258,7 @@ void ResourceEditorPlugin::addPrefixContextMenu() void ResourceEditorPlugin::removePrefixContextMenu() { - auto rfn = dynamic_cast(ProjectTree::currentNode()); + auto rfn = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(rfn, return); if (QMessageBox::question(Core::ICore::mainWindow(), tr("Remove Prefix"), @@ -271,7 +271,7 @@ void ResourceEditorPlugin::removePrefixContextMenu() void ResourceEditorPlugin::removeNonExisting() { - auto topLevel = dynamic_cast(ProjectTree::currentNode()); + auto topLevel = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(topLevel, return); topLevel->removeNonExistingFiles(); } @@ -283,7 +283,7 @@ void ResourceEditorPlugin::renameFileContextMenu() void ResourceEditorPlugin::removeFileContextMenu() { - auto rfn = dynamic_cast(ProjectTree::currentNode()); + auto rfn = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(rfn, return); QString path = rfn->filePath().toString(); FolderNode *parent = rfn->parentFolderNode(); @@ -296,26 +296,26 @@ void ResourceEditorPlugin::removeFileContextMenu() void ResourceEditorPlugin::openEditorContextMenu() { - Core::EditorManager::openEditor(ProjectTree::currentNode()->filePath().toString()); + Core::EditorManager::openEditor(ProjectTree::findCurrentNode()->filePath().toString()); } void ResourceEditorPlugin::copyPathContextMenu() { - auto node = dynamic_cast(ProjectTree::currentNode()); + auto node = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(node, return); QApplication::clipboard()->setText(QLatin1String(resourcePrefix) + node->qrcPath()); } void ResourceEditorPlugin::copyUrlContextMenu() { - auto node = dynamic_cast(ProjectTree::currentNode()); + auto node = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(node, return); QApplication::clipboard()->setText(QLatin1String(urlPrefix) + node->qrcPath()); } void ResourceEditorPlugin::renamePrefixContextMenu() { - auto node = dynamic_cast(ProjectTree::currentNode()); + auto node = dynamic_cast(ProjectTree::findCurrentNode()); QTC_ASSERT(node, return); PrefixLangDialog dialog(tr("Rename Prefix"), node->prefix(), node->lang(), Core::ICore::mainWindow()); @@ -330,8 +330,8 @@ void ResourceEditorPlugin::renamePrefixContextMenu() void ResourceEditorPlugin::updateContextActions() { - Node *node = ProjectTree::currentNode(); - bool isResourceNode = dynamic_cast(node); + const Node *node = ProjectTree::findCurrentNode(); + const bool isResourceNode = dynamic_cast(node); m_addPrefix->setEnabled(isResourceNode); m_addPrefix->setVisible(isResourceNode); @@ -352,7 +352,7 @@ void ResourceEditorPlugin::updateContextActions() m_openInEditor->setEnabled(isResourceNode); m_openInEditor->setVisible(isResourceNode); - bool isResourceFolder = dynamic_cast(node); + const bool isResourceFolder = dynamic_cast(node); m_removePrefix->setEnabled(isResourceFolder); m_removePrefix->setVisible(isResourceFolder); @@ -368,13 +368,13 @@ void ResourceEditorPlugin::updateContextActions() m_openWithMenu->clear(); m_openWithMenu->menuAction()->setVisible(!m_openWithMenu->actions().isEmpty()); - bool isResourceFile = dynamic_cast(node); + const bool isResourceFile = dynamic_cast(node); m_copyPath->setEnabled(isResourceFile); m_copyPath->setVisible(isResourceFile); m_copyUrl->setEnabled(isResourceFile); m_copyUrl->setVisible(isResourceFile); if (isResourceFile) { - auto fileNode = dynamic_cast(node); + auto fileNode = dynamic_cast(node); QTC_ASSERT(fileNode, return); QString qrcPath = fileNode->qrcPath(); m_copyPath->setParameter(QLatin1String(resourcePrefix) + qrcPath); diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index cb7b5be887b..48bdac0a9b7 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -160,7 +160,7 @@ public: ResourceTopLevelNode *topLevel, ResourceFolderNode *prefixNode); QString displayName() const final; - bool supportsAction(ProjectAction, Node *node) const final; + bool supportsAction(ProjectAction, const Node *node) const final; bool addFiles(const QStringList &filePaths, QStringList *notAdded) final; bool removeFiles(const QStringList &filePaths, QStringList *notRemoved) final; bool renameFile(const QString &filePath, const QString &newFilePath) final; @@ -199,7 +199,7 @@ SimpleResourceFolderNode::SimpleResourceFolderNode(const QString &afolderName, c } -bool SimpleResourceFolderNode::supportsAction(ProjectAction action, Node *) const +bool SimpleResourceFolderNode::supportsAction(ProjectAction action, const Node *) const { return action == AddNewFile || action == AddExistingFile @@ -389,7 +389,7 @@ QString ResourceTopLevelNode::addFileFilter() const return QLatin1String("*.png; *.jpg; *.gif; *.svg; *.ico; *.qml; *.qml.ui"); } -bool ResourceTopLevelNode::supportsAction(ProjectAction action, Node *node) const +bool ResourceTopLevelNode::supportsAction(ProjectAction action, const Node *node) const { if (node != this) return false; @@ -507,7 +507,7 @@ ResourceFolderNode::~ResourceFolderNode() } -bool ResourceFolderNode::supportsAction(ProjectAction action, Node *node) const +bool ResourceFolderNode::supportsAction(ProjectAction action, const Node *node) const { Q_UNUSED(node) @@ -672,7 +672,7 @@ QString ResourceFileNode::qrcPath() const return m_qrcPath; } -bool ResourceFileNode::supportsAction(ProjectAction action, Node *node) const +bool ResourceFileNode::supportsAction(ProjectAction action, const Node *node) const { if (action == HidePathActions) return false; diff --git a/src/plugins/resourceeditor/resourcenode.h b/src/plugins/resourceeditor/resourcenode.h index e2f84e005a7..02cb2968053 100644 --- a/src/plugins/resourceeditor/resourcenode.h +++ b/src/plugins/resourceeditor/resourcenode.h @@ -42,7 +42,7 @@ public: QString addFileFilter() const override; - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const override; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; bool addFiles(const QStringList &filePaths, QStringList *notAdded) override; bool removeFiles(const QStringList &filePaths, QStringList *notRemoved) override; @@ -68,7 +68,7 @@ public: ResourceFolderNode(const QString &prefix, const QString &lang, ResourceTopLevelNode *parent); ~ResourceFolderNode() override; - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const override; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; QString displayName() const override; @@ -98,7 +98,7 @@ public: QString displayName() const override; QString qrcPath() const; - bool supportsAction(ProjectExplorer::ProjectAction action, Node *node) const override; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; private: QString m_qrcPath; diff --git a/src/plugins/todo/todoitemsprovider.cpp b/src/plugins/todo/todoitemsprovider.cpp index d7a584179fe..54a525cf7df 100644 --- a/src/plugins/todo/todoitemsprovider.cpp +++ b/src/plugins/todo/todoitemsprovider.cpp @@ -145,7 +145,7 @@ void TodoItemsProvider::setItemsListWithinStartupProject() void TodoItemsProvider::setItemsListWithinSubproject() { // TODO prefer current editor as source of sub-project - Node *node = ProjectTree::currentNode(); + const Node *node = ProjectTree::findCurrentNode(); if (node) { ProjectNode *projectNode = node->parentProjectNode(); if (projectNode) {