forked from qt-creator/qt-creator
ProjectExplorer: Remove arguments from node change signals
This discourages storing the pointers needlessly. The items are still easy accessible by the static ProjectTree::currentNode() Change-Id: I3c0cd019e9fdc382afacbc9d9de3b97d5f58ae1e Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -108,9 +108,10 @@ void CMakeProjectPlugin::extensionsInitialized()
|
|||||||
CMakeToolManager::restoreCMakeTools();
|
CMakeToolManager::restoreCMakeTools();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeProjectPlugin::updateContextActions(ProjectExplorer::Node *node,
|
void CMakeProjectPlugin::updateContextActions()
|
||||||
ProjectExplorer::Project *project)
|
|
||||||
{
|
{
|
||||||
|
Project *project = ProjectTree::currentProject();
|
||||||
|
Node *node = ProjectTree::currentNode();
|
||||||
CMakeTargetNode *targetNode = dynamic_cast<CMakeTargetNode *>(node);
|
CMakeTargetNode *targetNode = dynamic_cast<CMakeTargetNode *>(node);
|
||||||
// as targetNode can be deleted while the menu is open, we keep only the
|
// as targetNode can be deleted while the menu is open, we keep only the
|
||||||
const QString targetDisplayName = targetNode ? targetNode->displayName() : QString();
|
const QString targetDisplayName = targetNode ? targetNode->displayName() : QString();
|
||||||
|
|||||||
@@ -29,11 +29,6 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
|
||||||
class Node;
|
|
||||||
class Project;
|
|
||||||
} // namespace ProjectExplorer
|
|
||||||
|
|
||||||
namespace Utils { class ParameterAction; }
|
namespace Utils { class ParameterAction; }
|
||||||
|
|
||||||
namespace CMakeProjectManager {
|
namespace CMakeProjectManager {
|
||||||
@@ -69,7 +64,7 @@ private slots:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
void updateContextActions();
|
||||||
|
|
||||||
Utils::ParameterAction *m_buildTargetContextAction = nullptr;
|
Utils::ParameterAction *m_buildTargetContextAction = nullptr;
|
||||||
QMetaObject::Connection m_actionConnect;
|
QMetaObject::Connection m_actionConnect;
|
||||||
|
|||||||
@@ -222,10 +222,9 @@ void ProjectTree::update(Node *node, Project *project)
|
|||||||
|
|
||||||
if (changedNode) {
|
if (changedNode) {
|
||||||
m_currentNode = node;
|
m_currentNode = node;
|
||||||
emit currentNodeChanged(m_currentNode, project);
|
emit currentNodeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (changedProject) {
|
if (changedProject) {
|
||||||
emit currentProjectChanged(m_currentProject);
|
emit currentProjectChanged(m_currentProject);
|
||||||
sessionChanged();
|
sessionChanged();
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentProjectChanged(ProjectExplorer::Project *project);
|
void currentProjectChanged(ProjectExplorer::Project *project);
|
||||||
void currentNodeChanged(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
void currentNodeChanged();
|
||||||
|
|
||||||
// Emitted whenever the model needs to send a update signal.
|
// Emitted whenever the model needs to send a update signal.
|
||||||
void nodeUpdated(ProjectExplorer::Node *node);
|
void nodeUpdated(ProjectExplorer::Node *node);
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ bool QbsProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
|
|
||||||
// Connect
|
// Connect
|
||||||
connect(ProjectTree::instance(), &ProjectTree::currentNodeChanged,
|
connect(ProjectTree::instance(), &ProjectTree::currentNodeChanged,
|
||||||
this, &QbsProjectManagerPlugin::nodeSelectionChanged);
|
this, &QbsProjectManagerPlugin::updateContextActions);
|
||||||
|
|
||||||
connect(BuildManager::instance(), &BuildManager::buildStateChanged,
|
connect(BuildManager::instance(), &BuildManager::buildStateChanged,
|
||||||
this, &QbsProjectManagerPlugin::buildStateChanged);
|
this, &QbsProjectManagerPlugin::buildStateChanged);
|
||||||
@@ -234,26 +234,19 @@ void QbsProjectManagerPlugin::projectWasRemoved()
|
|||||||
updateBuildActions();
|
updateBuildActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProjectManagerPlugin::nodeSelectionChanged(Node *node, Project *project)
|
|
||||||
{
|
|
||||||
m_selectedNode = node;
|
|
||||||
m_selectedProject = qobject_cast<Internal::QbsProject *>(project);
|
|
||||||
|
|
||||||
updateContextActions();
|
|
||||||
}
|
|
||||||
|
|
||||||
void QbsProjectManagerPlugin::updateContextActions()
|
void QbsProjectManagerPlugin::updateContextActions()
|
||||||
{
|
{
|
||||||
bool isEnabled = !BuildManager::isBuilding(m_selectedProject)
|
QbsProject *project = qobject_cast<Internal::QbsProject *>(ProjectTree::currentProject());
|
||||||
&& m_selectedProject && !m_selectedProject->isParsing()
|
Node *node = ProjectTree::currentNode();
|
||||||
&& m_selectedNode && m_selectedNode->isEnabled();
|
bool isEnabled = !BuildManager::isBuilding(project)
|
||||||
|
&& project && !project->isParsing()
|
||||||
|
&& node && node->isEnabled();
|
||||||
|
|
||||||
bool isFile = m_selectedProject && m_selectedNode && (m_selectedNode->nodeType() == NodeType::File);
|
bool isFile = project && node && (node->nodeType() == NodeType::File);
|
||||||
bool isProduct = m_selectedProject
|
bool isProduct = project && node
|
||||||
&& m_selectedNode
|
&& dynamic_cast<QbsProductNode *>(node);
|
||||||
&& dynamic_cast<QbsProductNode *>(m_selectedNode);
|
QbsProjectNode *subproject = dynamic_cast<QbsProjectNode *>(node);
|
||||||
QbsProjectNode *subproject = dynamic_cast<QbsProjectNode *>(m_selectedNode);
|
bool isSubproject = project && subproject && subproject != project->rootProjectNode();
|
||||||
bool isSubproject = m_selectedProject && subproject && subproject != m_selectedProject->rootProjectNode();
|
|
||||||
|
|
||||||
m_reparseQbsCtx->setEnabled(isEnabled);
|
m_reparseQbsCtx->setEnabled(isEnabled);
|
||||||
m_buildFileCtx->setEnabled(isEnabled && isFile);
|
m_buildFileCtx->setEnabled(isEnabled && isFile);
|
||||||
@@ -319,7 +312,7 @@ void QbsProjectManagerPlugin::buildStateChanged(Project *project)
|
|||||||
if (project == m_currentProject)
|
if (project == m_currentProject)
|
||||||
updateReparseQbsAction();
|
updateReparseQbsAction();
|
||||||
|
|
||||||
if (project == m_selectedProject)
|
if (project == ProjectTree::currentProject())
|
||||||
updateContextActions();
|
updateContextActions();
|
||||||
|
|
||||||
m_editorNode = currentEditorNode();
|
m_editorNode = currentEditorNode();
|
||||||
@@ -335,7 +328,7 @@ void QbsProjectManagerPlugin::parsingStateChanged()
|
|||||||
if (!project || project == m_currentProject)
|
if (!project || project == m_currentProject)
|
||||||
updateReparseQbsAction();
|
updateReparseQbsAction();
|
||||||
|
|
||||||
if (!project || project == m_selectedProject)
|
if (!project || project == ProjectTree::currentProject())
|
||||||
updateContextActions();
|
updateContextActions();
|
||||||
|
|
||||||
m_editorNode = currentEditorNode();
|
m_editorNode = currentEditorNode();
|
||||||
@@ -354,10 +347,11 @@ void QbsProjectManagerPlugin::currentEditorChanged()
|
|||||||
|
|
||||||
void QbsProjectManagerPlugin::buildFileContextMenu()
|
void QbsProjectManagerPlugin::buildFileContextMenu()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_selectedNode, return);
|
Node *node = ProjectTree::currentNode();
|
||||||
QTC_ASSERT(m_selectedProject, return);
|
QTC_ASSERT(node, return);
|
||||||
|
QbsProject *project = dynamic_cast<QbsProject *>(ProjectTree::currentProject());
|
||||||
buildSingleFile(m_selectedProject, m_selectedNode->filePath().toString());
|
QTC_ASSERT(project, return);
|
||||||
|
buildSingleFile(project, node->filePath().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProjectManagerPlugin::buildFile()
|
void QbsProjectManagerPlugin::buildFile()
|
||||||
@@ -370,14 +364,15 @@ void QbsProjectManagerPlugin::buildFile()
|
|||||||
|
|
||||||
void QbsProjectManagerPlugin::buildProductContextMenu()
|
void QbsProjectManagerPlugin::buildProductContextMenu()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_selectedNode, return);
|
Node *node = ProjectTree::currentNode();
|
||||||
QTC_ASSERT(m_selectedProject, return);
|
QTC_ASSERT(node, return);
|
||||||
|
QbsProject *project = dynamic_cast<QbsProject *>(ProjectTree::currentProject());
|
||||||
|
QTC_ASSERT(project, return);
|
||||||
|
|
||||||
const QbsProductNode * const productNode = dynamic_cast<QbsProductNode *>(m_selectedNode);
|
const QbsProductNode * const productNode = dynamic_cast<QbsProductNode *>(node);
|
||||||
QTC_ASSERT(productNode, return);
|
QTC_ASSERT(productNode, return);
|
||||||
|
|
||||||
buildProducts(m_selectedProject,
|
buildProducts(project, {QbsProject::uniqueProductName(productNode->qbsProductData())});
|
||||||
QStringList(QbsProject::uniqueProductName(productNode->qbsProductData())));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProjectManagerPlugin::buildProduct()
|
void QbsProjectManagerPlugin::buildProduct()
|
||||||
@@ -396,17 +391,19 @@ void QbsProjectManagerPlugin::buildProduct()
|
|||||||
|
|
||||||
void QbsProjectManagerPlugin::buildSubprojectContextMenu()
|
void QbsProjectManagerPlugin::buildSubprojectContextMenu()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_selectedNode, return);
|
Node *node = ProjectTree::currentNode();
|
||||||
QTC_ASSERT(m_selectedProject, return);
|
QTC_ASSERT(node, return);
|
||||||
|
QbsProject *project = dynamic_cast<QbsProject *>(ProjectTree::currentProject());
|
||||||
|
QTC_ASSERT(project, return);
|
||||||
|
|
||||||
QbsProjectNode *subProject = dynamic_cast<QbsProjectNode *>(m_selectedNode);
|
QbsProjectNode *subProject = dynamic_cast<QbsProjectNode *>(node);
|
||||||
QTC_ASSERT(subProject, return);
|
QTC_ASSERT(subProject, return);
|
||||||
|
|
||||||
QStringList toBuild;
|
QStringList toBuild;
|
||||||
foreach (const qbs::ProductData &data, subProject->qbsProjectData().allProducts())
|
foreach (const qbs::ProductData &data, subProject->qbsProjectData().allProducts())
|
||||||
toBuild << QbsProject::uniqueProductName(data);
|
toBuild << QbsProject::uniqueProductName(data);
|
||||||
|
|
||||||
buildProducts(m_selectedProject, toBuild);
|
buildProducts(project, toBuild);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProjectManagerPlugin::buildSubproject()
|
void QbsProjectManagerPlugin::buildSubproject()
|
||||||
@@ -497,7 +494,7 @@ void QbsProjectManagerPlugin::buildProducts(QbsProject *project, const QStringLi
|
|||||||
|
|
||||||
void QbsProjectManagerPlugin::reparseSelectedProject()
|
void QbsProjectManagerPlugin::reparseSelectedProject()
|
||||||
{
|
{
|
||||||
reparseProject(m_selectedProject);
|
reparseProject(dynamic_cast<QbsProject *>(ProjectTree::currentProject()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProjectManagerPlugin::reparseCurrentProject()
|
void QbsProjectManagerPlugin::reparseCurrentProject()
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ private:
|
|||||||
void projectWasAdded(ProjectExplorer::Project *project);
|
void projectWasAdded(ProjectExplorer::Project *project);
|
||||||
void currentProjectWasChanged(ProjectExplorer::Project *project);
|
void currentProjectWasChanged(ProjectExplorer::Project *project);
|
||||||
void projectWasRemoved();
|
void projectWasRemoved();
|
||||||
void nodeSelectionChanged(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
|
||||||
void buildStateChanged(ProjectExplorer::Project *project);
|
void buildStateChanged(ProjectExplorer::Project *project);
|
||||||
void parsingStateChanged();
|
void parsingStateChanged();
|
||||||
void currentEditorChanged();
|
void currentEditorChanged();
|
||||||
@@ -94,9 +93,6 @@ private:
|
|||||||
Utils::ParameterAction *m_buildProduct = nullptr;
|
Utils::ParameterAction *m_buildProduct = nullptr;
|
||||||
Utils::ParameterAction *m_buildSubproject = nullptr;
|
Utils::ParameterAction *m_buildSubproject = nullptr;
|
||||||
|
|
||||||
Internal::QbsProject *m_selectedProject = nullptr;
|
|
||||||
ProjectExplorer::Node *m_selectedNode = nullptr;
|
|
||||||
|
|
||||||
Internal::QbsProject *m_currentProject = nullptr;
|
Internal::QbsProject *m_currentProject = nullptr;
|
||||||
|
|
||||||
Internal::QbsProject *m_editorProject = nullptr;
|
Internal::QbsProject *m_editorProject = nullptr;
|
||||||
|
|||||||
@@ -315,8 +315,10 @@ void QmakeProjectManagerPlugin::updateRunQMakeAction()
|
|||||||
m_runQMakeAction->setEnabled(enable);
|
m_runQMakeAction->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmakeProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project)
|
void QmakeProjectManagerPlugin::updateContextActions()
|
||||||
{
|
{
|
||||||
|
Node *node = ProjectTree::currentNode();
|
||||||
|
Project *project = ProjectTree::currentProject();
|
||||||
m_addLibraryActionContextMenu->setEnabled(dynamic_cast<QmakeProFileNode *>(node));
|
m_addLibraryActionContextMenu->setEnabled(dynamic_cast<QmakeProFileNode *>(node));
|
||||||
|
|
||||||
auto proFileNode = dynamic_cast<QmakeProFileNode *>(node);
|
auto proFileNode = dynamic_cast<QmakeProFileNode *>(node);
|
||||||
@@ -377,10 +379,9 @@ void QmakeProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node
|
|||||||
|
|
||||||
void QmakeProjectManagerPlugin::buildStateChanged(ProjectExplorer::Project *pro)
|
void QmakeProjectManagerPlugin::buildStateChanged(ProjectExplorer::Project *pro)
|
||||||
{
|
{
|
||||||
ProjectExplorer::Project *currentProject = ProjectTree::currentProject();
|
if (pro == ProjectTree::currentProject()) {
|
||||||
if (pro == currentProject) {
|
|
||||||
updateRunQMakeAction();
|
updateRunQMakeAction();
|
||||||
updateContextActions(ProjectTree::currentNode(), pro);
|
updateContextActions();
|
||||||
updateBuildFileAction();
|
updateBuildFileAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,9 +33,7 @@ class QAction;
|
|||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
class Node;
|
|
||||||
class Project;
|
class Project;
|
||||||
class KitInformation;
|
|
||||||
class Target;
|
class Target;
|
||||||
}
|
}
|
||||||
namespace Utils { class ParameterAction; }
|
namespace Utils { class ParameterAction; }
|
||||||
@@ -69,7 +67,7 @@ private:
|
|||||||
void projectChanged();
|
void projectChanged();
|
||||||
void activeTargetChanged();
|
void activeTargetChanged();
|
||||||
void updateRunQMakeAction();
|
void updateRunQMakeAction();
|
||||||
void updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
void updateContextActions();
|
||||||
void buildStateChanged(ProjectExplorer::Project *pro);
|
void buildStateChanged(ProjectExplorer::Project *pro);
|
||||||
void updateBuildFileAction();
|
void updateBuildFileAction();
|
||||||
|
|
||||||
|
|||||||
@@ -306,8 +306,9 @@ void ResourceEditorPlugin::renamePrefixContextMenu()
|
|||||||
node->renamePrefix(prefix, dialog.lang());
|
node->renamePrefix(prefix, dialog.lang());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceEditorPlugin::updateContextActions(Node *node, Project *)
|
void ResourceEditorPlugin::updateContextActions()
|
||||||
{
|
{
|
||||||
|
Node *node = ProjectTree::currentNode();
|
||||||
bool isResourceNode = dynamic_cast<ResourceTopLevelNode *>(node);
|
bool isResourceNode = dynamic_cast<ResourceTopLevelNode *>(node);
|
||||||
m_addPrefix->setEnabled(isResourceNode);
|
m_addPrefix->setEnabled(isResourceNode);
|
||||||
m_addPrefix->setVisible(isResourceNode);
|
m_addPrefix->setVisible(isResourceNode);
|
||||||
|
|||||||
@@ -32,11 +32,6 @@ class QAction;
|
|||||||
class QMenu;
|
class QMenu;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
|
||||||
class Node;
|
|
||||||
class Project;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Utils { class ParameterAction; }
|
namespace Utils { class ParameterAction; }
|
||||||
|
|
||||||
namespace ResourceEditor {
|
namespace ResourceEditor {
|
||||||
@@ -75,7 +70,7 @@ private slots:
|
|||||||
void copyPathContextMenu();
|
void copyPathContextMenu();
|
||||||
void copyUrlContextMenu();
|
void copyUrlContextMenu();
|
||||||
|
|
||||||
void updateContextActions(ProjectExplorer::Node*,ProjectExplorer::Project*);
|
void updateContextActions();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void onUndoStackChanged(ResourceEditorW const *editor, bool canUndo, bool canRedo);
|
void onUndoStackChanged(ResourceEditorW const *editor, bool canUndo, bool canRedo);
|
||||||
|
|||||||
Reference in New Issue
Block a user