forked from qt-creator/qt-creator
ProjectExplorer: Fix enabling state of main project nodes
Since the rootProjectNode() containing the parsed files is now nested under a new project node the main node needs to delegate enable/disable decisions. Task-number: QTCREATORBUG-17922 Change-Id: Ie7bb6d6802072a2127b32c0fe51fb25fc1c9c6cc Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "projectnodes.h"
|
||||
|
||||
#include "project.h"
|
||||
#include "projectexplorerconstants.h"
|
||||
#include "projecttree.h"
|
||||
|
||||
@@ -171,8 +172,9 @@ FolderNode *Node::parentFolderNode() const
|
||||
|
||||
ProjectNode *Node::managingProject()
|
||||
{
|
||||
if (!m_parentFolderNode)
|
||||
return nullptr;
|
||||
if (asContainerNode())
|
||||
return asContainerNode()->rootProjectNode();
|
||||
QTC_ASSERT(m_parentFolderNode, return nullptr);
|
||||
ProjectNode *pn = parentProjectNode();
|
||||
return pn ? pn : asProjectNode(); // projects manage themselves...
|
||||
}
|
||||
@@ -790,4 +792,35 @@ bool FolderNode::isEmpty() const
|
||||
return m_nodes.isEmpty();
|
||||
}
|
||||
|
||||
ContainerNode::ContainerNode(Project *project)
|
||||
: FolderNode(Utils::FileName(), NodeType::Project), m_project(project)
|
||||
{}
|
||||
|
||||
QString ContainerNode::displayName() const
|
||||
{
|
||||
QString name = m_project->displayName();
|
||||
|
||||
const QFileInfo fi = m_project->projectFilePath().toFileInfo();
|
||||
const QString dir = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath();
|
||||
if (Core::IVersionControl *vc = Core::VcsManager::findVersionControlForDirectory(dir)) {
|
||||
QString vcsTopic = vc->vcsTopic(dir);
|
||||
if (!vcsTopic.isEmpty())
|
||||
name += " [" + vcsTopic + ']';
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
QList<ProjectAction> ContainerNode::supportedActions(Node *node) const
|
||||
{
|
||||
if (Node *rootNode = m_project->rootProjectNode())
|
||||
return rootNode->supportedActions(node);
|
||||
return {};
|
||||
}
|
||||
|
||||
ProjectNode *ContainerNode::rootProjectNode() const
|
||||
{
|
||||
return m_project->rootProjectNode();
|
||||
}
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
Reference in New Issue
Block a user